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

Dúvida ainda não solucionada

Testei esse exercicio e parece que ainda não foi corrigido, é a mesma dúvida do nosso amigo https://cursos.alura.com.br/forum/topico-as-repostas-do-instrutor-nao-parecem-ser-equivalentes-51704

no primeiro resultado ele traz 5 resultados e no segundo invertido ele traz 4...

qual seria a sintaxe correta da inversão?

2 respostas
solução!

Olá smagnun,

deve ter ocorrido algum problema quando fui editar o exercício da outra vez que ele não guardou a resposta. Agora sim ajustei lá e confirmei que ele manteve a resposta correta.

De qualquer forma, dado que o problema é buscar todos os alunos que não tiveram nenhuma matrícula nos últimos 45 dias, precisamos de uma subquery para primeiro buscar quais alunos fizeram matrícula nos últimos 45 dias:

select m.id from matricula m where m.aluno_id = a.id and m.data > now() - interval 45 day

Ai agora basta pegar entre todos os alunos, quais não se encontram nessa categoria de que fecharam uma matrícula nos últimos 45 dias. Neste momento que entra o not exists:

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 45 day
     );

beleza, obrigado :)