2
respostas

Dúvida left join

Pessoal, boa tarde! Eu sei que left join vai ser explicado mais para frente, mas, eu tentei fazer com left join e ficou da seguinte maneira: select a.nome from aluno a left join matricula m on a.id = m.aluno_id where m.data < (select sysdate - interval '1' year from dual);

Mas, retornou 14 linhas. O que eu fiz de errado?

2 respostas

Também estou procurando uma solução.

O problema é que da maneira como a query está sendo construída. Só os alunos que aparecem nas duas tabelas são retornados.

Encontrei uma solução, mas não sei se é a mais correta.

SELECT DISTINCT( a.nome )
FROM aluno a 
LEFT JOIN (SELECT aluno_id FROM matricula m WHERE NOT (m.data > (SELECT SYSDATE - INTERVAL '1' year FROM  DUAL))) m ON m.aluno_id=a.id ;