Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Porque que nessa primeira sintaxe o m.id é recebido da matrícula , já na segunda sintaxe o c.id não é s.id?

1 ) select c.nome, count(m.id) from curso c -> join matricula m on m.id = m.curso_id -> group by c.nome;

2) > select c.nome, count(s.id) from -> curso c join secao s on c.id = s.curso_id -> group by c.id -> having count(s.id) > 3;

1 resposta
solução

Oi Jorge, tudo bem?

No primeiro caso, estamos contando as matrículas dos alunos considerando todos os cursos que eles fizeram.

No segundo caso, estamos contando do total de cursos que o aluno fez e está fazendo em que o aluno por mais de 3 sessões do curso.

O critério da primeira query é contar as matriculas. Independente dos cursos terem sido finalizados ou não. No segundo caso, podemos ignorar a matrícula por que a contagem é das sessões feitas.

Aqui podemos ter uma casca de banana: um aluno pode fazer várias sessões sem se matricular? Se sim, a contagem pode fazer diferença usando o m.id. Caso contrário, a contagem não será impactada pela relação com a matrícula, ou seja, podemos ignorá-la. :D

Faz sentido?