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)
);
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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)
);
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!
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.