Me ajudem a fazer esse SQL, estou com dificuldades

2 respostas
carol_programadora

Oi gente, estou com dificuldade pra fazer um select, vou mostrar a idéia do que preciso:

Ex:
Tabela Pessoa
Id, Nome, Idade

Tabela Filho
Id, Nome, Idade, Pai(PK pessoa)

O que eu preciso é: trazer todos os nomes dos pais com filhos com idade menos que 18 OU Pai que não tenham filhos, ou seja, sem correspondência na tabela filhos e o nome do filho caso ele atenda a regra. Tem como?

O que eu tentei fazer, mas não deu certo.
Select pai.nome, filho.nome from Pessoa pai left outer foin Filho filho on filho.pai = pai.id

O problema é que quero trazer um registro que pode não existir, eu faço "Select pai.nome, filho.nome", mas se Pessoa não tiver filho não sei se iria trazer, pelo jeito não, pois não está funcionando.

Alguém pode me indicar um caminho pra que eu resolva?

2 Respostas

ViniGodoy

Vai ficar mais ou menos assim:

SELECT p.nome nomePai, '' AS nomeFilho FROM Pessoa p LEFT OUTER JOIN Filho f ON f.Pai = p.Id WHERE f.nome is NULL UNION SELECT p.nome nomePai, f.Nome nomeFilho FROM Pessoa p INNER JOIN Filho f ON f.Pai = p.Id WHERE f.idade < 18;

carol_programadora

Oie,

Muito grata pela resposta, me ajudou muito.

Criado 27 de maio de 2010
Ultima resposta 27 de mai. de 2010
Respostas 2
Participantes 2