Por que nesse caso não se usa o JOIN? Sendo que se tem ligação com duas tabelas diferentes.
select a.nome from aluno a where not exists (select m.id from matricula m where m.aluno_id = a.id);
Por que nesse caso não se usa o JOIN? Sendo que se tem ligação com duas tabelas diferentes.
select a.nome from aluno a where not exists (select m.id from matricula m where m.aluno_id = a.id);
Fala Luka,
Neste caso ele quer buscar exatamente quem não tem matrícula, então lendo o comando é exatamente isso selecionar o nome de aluno onde não exista a seleção do id do aluno em matrícula, você pode usando JOIN, mas no caso seria RIGHT JOIN ou LEFT JOIN como nos exemplos abaixo:
SELECT M.ID
FROM MATRICULA M
RIGHT JOIN ALUNO A ON A.ID = M.ALUNO_ID
WHERE MATRICULA.ID IS NULL //ONDE NÃO TENHA VINCULO COM A MATRÍCULA
SELECT M.ID
FROM ALUNO A
LEFT JOIN MATRICULA M ON A.ID = M.ALUNO_ID
WHERE MATRICULA.ID IS NULL //ONDE NÃO TENHA VINCULO COM A MATRÍCULA
Pelo que eu li o NOT EXISTS tem uma performance melhor.
Espero ter ajudado!
Abraços!