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

Método alternativo

Utilizando essa query

select * from aluno a
join matricula m on m.aluno_id = a.id
where not exists( select m.id from matricula  
    where m.aluno_id = a.id and 
    ( m.data between GETDATE() -45 and GETDATE() ) );

Encontrei o mesmo resultado dessa:

select * from aluno a
join matricula m on m.aluno_id = a.id
where ( m.data < ( GETDATE() - 45 ) ) ;

Seria realmente necessário o Left Join ou eu errei em algum lugar?

3 respostas

Acho que o problema da query de cima é que a subquery usa as mesmas restrições do join.. meio que não muda nada mesmo. Por isso que apenas o where na segunda consulta já foi suficiente...

Em resumo, a sua subquery trouxe o mesmo conjunto de dados da segunda query, por isso que não fez diferença.

solução!

Então realmente é um método alternativo sem left join ?

Nenhuma das consultas que vc colocou tem left join... Mas sim, nesse caso as duas tem resultados equivalentes.

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