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

Resultado de sub-query

Olá,

Na primeira aula, no exercício para retornar alunos sem matrícula é utilizada a seguinte query:

"select a.nome from aluno a where not exists (select m.id from matricula m where m.aluno_id = a.id);"

Notei que o retorno da sub-query (m.id )aparenta não se relacionar diretamente com a tabela "aluno", e se alterarmos para m.tipo, m.data, ou qualquer outra coluna existente em matrícula o resultado da query principal não é alterada.

Logo, cheguei a conclusão que pelo fato de não estarmos utilizando "join", quem define o retorno da sub-query para a query principal é a igualdade m.aluno_id = a.id, onde a.id se relaciona diretamente com a tabela aluno.

Essa constatação é verdadeira?

Obs: é péssima a didática dessa primeira aula do curso de MySQL II. Principalmente quando comparada a todas as aulas do curso MySQL I, que apresentou uma ótima didática e coerência em todo conteúdo.

2 respostas
solução!

O que você coloca na cláusula SELECT dentro da subquery não faz diferença. Nesse exemplo, o que interferiu no resultado foi a condição m.aluno_id = a.id.

Traditionally, an EXISTS subquery starts with SELECT , but it could begin with SELECT 5 or SELECT column1 or anything at all. MySQL ignores the SELECT list in such a subquery, so it makes no difference .

https://dev.mysql.com/doc/refman/8.0/en/exists-and-not-exists-subqueries.html

Esclarecido. Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software