lorena1601 Postado Abril 12, 2012 Denunciar Share Postado Abril 12, 2012 (editado) Olá, minha simples consulta ficou assim:select PF.Cpffrom T_PESSOA_FISICA PFinner join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoawhere PES.nome = 'ANTONIO CELSO' or PES.nome = 'JOSE CELSO' OR PES.nome = 'TONIO CELSO'O que eu quero é que, se não for encontrado alguns desses 3, ele salte uma linha. Exp:Vamos supor que exista o ANTONIO CELSO E TONIO CELSO, então a pesquisa atualmente me retorna:123464564123145598Eu gostaria que ficasse assim:123464564123145598Tentei com char(13), mas n deu muito certo.. :( Editado Abril 14, 2012 por lorena1601 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 12, 2012 Denunciar Share Postado Abril 12, 2012 Boa tarde Lorena, você pode utilizar o CASE ao invés do OR. Desta forma, você coloca as variáveis do campo PES.nome. Caso não encontre, você retorna "" (abre e fecha aspas). Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lorena1601 Postado Abril 12, 2012 Autor Denunciar Share Postado Abril 12, 2012 (editado) Boa tarde Lorena, você pode utilizar o CASE ao invés do OR. Desta forma, você coloca as variáveis do campo PES.nome. Caso não encontre, você retorna "" (abre e fecha aspas).o/Obga, só amanhã vou ver se deu certin, mas ficaria algo do tipo?SELECT PF.Cpffrom T_PESSOA_FISICA PFinner join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoaCASE where PES.nome = 'ANTONIO CELSO' orPES.nome = 'JOSE CELSO' ORPES.nome = 'TONIO CELSO'ELSE ''ENDVou testar amanhã isto, essa parte dentro do where, eu vou rodar num programa pra gerar isso para mim.Outra pergunta, esses dados(nomes) estão numa planilha de excell, vou coloca-los num programa que vai criar um bloco de notas assim:PES.nome = 'ANTONIO CELSO' orPES.nome = 'JOSE CELSO' orPES.nome = 'TONIO CELSO' or....Tem uma maneira mais simples de escrever isto, sem ter q repetir 500 PES.nome ='nome' orObga mais uma vez:) Editado Abril 13, 2012 por lorena1601 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 13, 2012 Denunciar Share Postado Abril 13, 2012 Bom dia Lorena, Estava fazendo uns testes aqui. Dá uma olhada se assim resolve:select PF.Cpf from T_PESSOA_FISICA PF right join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoa Desta forma, o resultado retornará NULL no lugar de espaço em branco. OBS.: Se o campo for interito, não terá como colocar espaço em branco. Aí terá que tratar o NULL. Se for caracter, aí sim terá jeito de retirar o NULL e colocar espaço em branco. A sua sintaxe de case está incorreta. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lorena1601 Postado Abril 13, 2012 Autor Denunciar Share Postado Abril 13, 2012 Tentei usando o right join, e não me trouxe espaço em branco ficou assim:SELECT PF.NomePaifrom T_PESSOA_FISICA PFright join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoawhere PES.nome = 'ANTONIO CELSO' orPES.nome = 'ANgfgfgfTONIO CELSO CARNEIRO' orPES.nome = 'EDSON JOSE' Troquei o select para não ter erro..o 1º e o 3º existem, mas o resultado foi este:NomePai---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------JOAO CARNEIROGERALDO JOSE (2 row(s) affected)Eu peguei uma apostila de SQL pra dar uma lida, vou tentar um novo código com CASE e posto aqui.. :) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Abril 13, 2012 Denunciar Share Postado Abril 13, 2012 Estava fazendo os testes deta forma:CREATE TABLE #T_PESSOA_FISICA (id int,cpf int) CREATE TABLE #T_PESSOA (id int,Nome VARCHAR(20)) INSERT INTO #T_PESSOA_FISICA VALUES (1, 123464564) INSERT INTO #T_PESSOA_FISICA VALUES (3, 123145598) INSERT INTO #T_PESSOA VALUES (1, 'ANTONIO CELSO') INSERT INTO #T_PESSOA VALUES (2, 'JOSE CELSO') INSERT INTO #T_PESSOA VALUES (3, 'TONIO CELSO') select PF.Cpf from #T_PESSOA_FISICA PF right join #T_PESSOA PES ON PES.id = PF.id Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lorena1601 Postado Abril 14, 2012 Autor Denunciar Share Postado Abril 14, 2012 (editado) eu entendi o q você fez, mas o meu problema é q preciso pegar apenas os cpf's dos nomes que eu irei passar, e se n existir aquele nome, saltar uma linha..eu instalei o mysql na minha máq e fiz o mesmo q vc, e na vdd só me retornou o resultado, não teve nenhum null..tb tentei fazer:select pf.cpffrom t_pessoa_fisicapf right join t_pessoa pes on pes.id = pf.idwhere pf.nome in (´ANTONIO CELSO´, ´lol´,´TONIO CELSO´);.---------------------. Editado Abril 14, 2012 por lorena1601 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lorena1601 Postado Abril 14, 2012 Autor Denunciar Share Postado Abril 14, 2012 .-------------.tó com uma dúvida, como posso retornar algo se já´estou usando o select?pesquisei na internet e só tem exemplos muito simplesusando o case, fica assim:select pf.cpf from t_pessoa_fisica pf inner join t_pessoa pes case when pf.nome in ('ANTONIO CELSO', 'LOL', 'ANTONIO CELSO') then 'ok' else 'null' end esse ok, vou pra teste, como vou retornar o cpf se já pedi pra me passar no select? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lorena1601 Postado Abril 14, 2012 Autor Denunciar Share Postado Abril 14, 2012 Resolvido.. n precisava usar case.. ficou assim:select PF.Cpf , PES.nomefrom T_PESSOA_FISICA PFRIGHT OUTER JOIN T_PESSOA PES ON PES.pkPessoa = PF.fkPessoawhere (PES.nome = 'ANTONIO CELSO' or PES.nome = 'JOSE CELSO' OR PES.nome = 'TONIO CELSO')vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
lorena1601
Olá, minha simples consulta ficou assim:
select PF.Cpf
from T_PESSOA_FISICA PF
inner join T_PESSOA PES ON PES.pkPessoa = PF.fkPessoa
where PES.nome = 'ANTONIO CELSO' or
PES.nome = 'JOSE CELSO' OR
PES.nome = 'TONIO CELSO'
O que eu quero é que, se não for encontrado alguns desses 3, ele salte uma linha. Exp:
Vamos supor que exista o ANTONIO CELSO E TONIO CELSO, então a pesquisa atualmente me retorna:
123464564
123145598
Eu gostaria que ficasse assim:
123464564
123145598
Tentei com char(13), mas n deu muito certo.. :(
Editado por lorena1601Link para o comentário
Compartilhar em outros sites
8 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.