Ola gente, gostaria de saber se nesta questão 4 o uso do seguinte código também seria válido:
select a.id, a.nome from aluno a
join matricula m on m.aluno_id = a.id
where a.id in(select m.aluno_id from matricula m);
obrigado
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!
Ola gente, gostaria de saber se nesta questão 4 o uso do seguinte código também seria válido:
select a.id, a.nome from aluno a
join matricula m on m.aluno_id = a.id
where a.id in(select m.aluno_id from matricula m);
obrigado
desculpe, passei a query errada. É esta abaixo a correta:
select a.id, a.nome from aluno a
where a.id not in(select m.aluno_id from matricula m);
Oi Taruman
Nesse exemplo eu acredito que funcione sim. Você comparou os resultados ?
Oi Caio!
Os resultados bateram sim. É que sempre bate aquela dúvida pra quem ainda não tem muita experiência rs. Valeu!
Pensei na mesma query que o Taruman, usando a clausula NOT IN. Acho até mais intuitiva que o EXISTS.
Pensei na mesma query que o Taruman, usando a clausula NOT IN. Acho até mais intuitiva que o EXISTS.
Aqui também utilizei sub-queries, mas realmente não havia pensando no LEFT JOIN:
--Modo 1 (JOIN e DISTINCT para as repetições com a table matricula): SELECT DISTINCT A.nome from aluno A JOIN matricula M on M.aluno_id = A.id ORDER BY A.nome
--Modo 2 (Através de sub-query com a palavra reservada IN): SELECT A.nome FROM aluno A WHERE A.id IN(SELECT M.aluno_id from matricula M) ORDER BY A.nome
--P/ obter os alunos que não tem matrícula, pode-se sub-query e utilizar o NOT IN. SELECT A.nome FROM aluno A WHERE A.id NOT IN(SELECT M.aluno_id from matricula M) ORDER BY A.nome