Usuário com melhor resposta
Sub Consultas

Pergunta
-
Boa noite galera.
Existe a possibilidade de fazer sub consulta com IF?
Exemplo:
tabela 01, tabela 02 e tabela 03.
Na tabela 01 pego um resultado (tipo Nome). Consulto na tabela 02 se tem esse nome nela, caso não tenha eu verifico se tem na tabela 03, daí mostro o resultado: Nome + resultado da tabela 02 ou 03.
Tem como fazer dessa forma? Se tiver, como posso fazer?
Desde já agradeço.
Perrot
Respostas
-
Exemplo:
Select NomeCompleto = Case When (T2.Nome is not Null) Then T1.Nome + T2.SobreNome When (T3.Nome is not Null) Then T1.Nome + T3.SobreNome Else T1.Nome From Tabela1 T1 Left Join Tabela2 T2 on (T2.Nome = T1.Nome) Left Join Tabela3 T3 on (T3.Nome = T1.Nome)
Este exemplo concatena o nome que está na tabela 1 com o sobrenome que está na 2, caso exista. Quando não existir na tabela 2, concatena com o sobrenome que está na tabela 3, caso exista. E se também não existir, o "nome completo" será somente o "nome" que está na tabela 1.
Observação: a ligação entre as tabelas está sendo feita pelo campo nome somente para entendimento. Normalmente existe algum outro campo mais próprio para fazer isso.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Perrot quinta-feira, 19 de abril de 2012 14:19
Todas as Respostas
-
Boa noite,
Sinceramente não sei se a segunda consulta deixará de ser realizada se a primeira encontrar, mas acredito que da forma abaixo seria obtido o resultado desejado:
select t1.Nome, COASLESCE ( (select Nome from Tabela2 as t2 where t2.Nome = t1.Nome), (select Nome from Tabela3 as t3 where t3.Nome = t1.Nome) ) from Tabela1 as t1
Espero que seja útil.
Assinatura: Imobiliarias em Suzano
-
Sua situação será resolvida com um Left Join da Tabela1 em relação às tabelas 2 e 3.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta. -
Exemplo:
Select NomeCompleto = Case When (T2.Nome is not Null) Then T1.Nome + T2.SobreNome When (T3.Nome is not Null) Then T1.Nome + T3.SobreNome Else T1.Nome From Tabela1 T1 Left Join Tabela2 T2 on (T2.Nome = T1.Nome) Left Join Tabela3 T3 on (T3.Nome = T1.Nome)
Este exemplo concatena o nome que está na tabela 1 com o sobrenome que está na 2, caso exista. Quando não existir na tabela 2, concatena com o sobrenome que está na tabela 3, caso exista. E se também não existir, o "nome completo" será somente o "nome" que está na tabela 1.
Observação: a ligação entre as tabelas está sendo feita pelo campo nome somente para entendimento. Normalmente existe algum outro campo mais próprio para fazer isso.
Roberson Ferreira - Database Developer
Acesse: www.robersonferreira.com.br
Email: contato@robersonferreira.com.brSe esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.- Marcado como Resposta Perrot quinta-feira, 19 de abril de 2012 14:19