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

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

Olá! Da forma que fiz, aparentemente também funciona. Está errada esta instrução?

select a.id, a.nome 
from aluno a
where not exists (
  select m.id 
  from matricula m
  where m.aluno_id = a.id
    and m.data >= (getdate() - 45)
);
5 respostas

Cleo não cheguei a fazer o curso de SQLServer, como esta a SQL no exercício ?

Acredito que esteja usando join ao contrário de where, certo ?

Olá, Matheus!

No exercício a resposta correta é esta:

select a.nome from aluno a 
where 
not exists 
  (select m.id from matricula m 
   where m.aluno_id = a.id and m.data > dateadd(DAY, -30, getdate()) 
  );

Cleo pelo que eu vi você apenas usou uma função diferente para datas passando um intervalo maior, sua instrução também esta correta pois existem várias formas de fazer certas funções e se chegar ao mesmo resultado.

Matheus, utilizei o intervalo solicitado pelo exercício. Veja:

*"Mais EXISTS

Busque todos os alunos que não tiveram nenhuma matrícula nos últimos 45 dias, usando a instrução EXISTS.

Cole o código SQL aqui."*

Minha dúvida era apenas no cálculo de dias, mas como você bem falou, existem diversas formas de se conseguir o mesmo resultado. Pelo visto, do meu jeito também está correto. :-)

Valeu pela força!

solução!

Sim exatamente, não existe uma única e correta maneira de se fazer certas funções e SQL, o importante é você chegar no resultado desejado, as vezes vale ressaltar que talvez uma função fique mais lenta do que outra ai é necessário analisar a SQL e ver uma forma correto para se resolver.