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
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