1
resposta

Confusão no uso da comparação dentro do "not exists".

Tenho a impressão que o professor fez confusão na última pesquisa. Levando em consideração que ele está utilizando "where not exists", a comparação entre "m.data" e " "now() - interval 18 month" deveria ter sido feita com "maior que (>)", ao invés de "menor que (<)". Ou foi eu que fiz confusão?

A intenção dele era encontrar os alunos que não estão matriculados em um curso ou que não se matriculam há 18 meses. A pesquisa inteira do professor foi a seguinte:

select a.nome from aluno a where not exists (
select m.id from matricula m where m.aluno_id = a.id 
and m.data < now() - interval 18 month);
1 resposta

Hm, não sei se entendi bem o problema, mas a query pra mim significa que ele tá buscando os alunos que não tem matricula no últimos 18 meses.

A comparação pega as datas de matricula menores que 18 meses, mas o not inverte essa lógica e deve pegar apenas as que são maiores de 18 meses. É isso mesmo?