lorena1601 Posted April 12, 2012 Report Share Posted April 12, 2012 (edited) 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.. :( Edited April 14, 2012 by lorena1601 Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 12, 2012 Report Share Posted April 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). Quote Link to comment Share on other sites More sharing options...
0 lorena1601 Posted April 12, 2012 Author Report Share Posted April 12, 2012 (edited) 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:) Edited April 13, 2012 by lorena1601 Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 13, 2012 Report Share Posted April 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. Quote Link to comment Share on other sites More sharing options...
0 lorena1601 Posted April 13, 2012 Author Report Share Posted April 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.. :) Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted April 13, 2012 Report Share Posted April 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 Quote Link to comment Share on other sites More sharing options...
0 lorena1601 Posted April 14, 2012 Author Report Share Posted April 14, 2012 (edited) 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´);.---------------------. Edited April 14, 2012 by lorena1601 Quote Link to comment Share on other sites More sharing options...
0 lorena1601 Posted April 14, 2012 Author Report Share Posted April 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? Quote Link to comment Share on other sites More sharing options...
0 lorena1601 Posted April 14, 2012 Author Report Share Posted April 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 Quote Link to comment Share on other sites More sharing options...
Question
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.. :(
Edited by lorena1601Link to comment
Share on other sites
8 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.