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);
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!