Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Dúvida no Ex. 4 da Aula 1 - Alunos sem matrícula e o EXISTS

Engraçado. Eu fiz uma query desse jeito: select distinct a.nome from aluno a inner join matricula m on m.aluno_id=a.id; E gerou o mesmo resultado que select a.nome from aluno a where exists ( select m.id from matricula m where m.aluno_id = a.id); Nesse caso inner join pode substituir exists ?

3 respostas

Samuel ,

na verdade o que está fazendo ter o mesmo resultado é por causa da palavra distinct ,

espero ter ajudado .

Nesse caso específico, então, é correto afirmar que inner join utilizado com distinct pode substituir o exists ?

solução!

Samuel ,

Sim , mas está dando certo apenas com o exericicio , "USANDO O EXISTS" , que é para saber quantos alunos estão matriculados .

Vamos entender sua Query

a palavra distinct , ela não deixa repetir o resultado no caso , se você fizer a seguinte query :

mysql> select a.nome from aluno a
    -> join matricula m on m.aluno_id = a.id;

irá perceber que repete um dos nomes ok .

quando fazemos inner join , ele irá buscar todos elementos que estão relacionado na tabela .

agora acredito que o exericico quer saber se é possivel saber se tem algum aluno que não está matriculado .

neste caso é só utilizando o comando left join que será ensinado mais para frente .

espero ter te ajudado .