Achei um tanto quanto confuso o exemplo dá média de nota por Aluno/Curso. Não entendi muito bem o porque de ter tantos Joins. Será que alguém poderia me explicar?
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!
Achei um tanto quanto confuso o exemplo dá média de nota por Aluno/Curso. Não entendi muito bem o porque de ter tantos Joins. Será que alguém poderia me explicar?
Opa Rafael, vou colar a query aqui pra gente ter um contexto.
select a.nome, c.nome, avg(n.nota) from
nota n
join resposta r on r.id = n.resposta_id
join exercicio e on e.id = r.exercicio_id
join secao s on s.id = e.secao_id
join curso c on c.id = s.curso_id
join aluno a on a.id = r.aluno_id
group by c.nome, a.nome
having avg(n.nota) < 5O join ajuda a gente a relacionar dados de uma tabela com outra e o uso de muitos joins pode ser confuso sim. Você até pode conseguir eliminar alguns se elaborar uma lógica mais direta.
O ponto aqui é que todas as tabelas contam. A nota tá ligada a uma resposta que é relativa a um exercício que está dentro de uma sessão em um curso onde o aluno tem uma matrícula. (olha que na query nem usamos a matrícula - um join a menos).
Como cada nota, aluno, exercício, resposta, curso, etc... Precisam estar relacionados, usamos todos esses joins.
Pra ficar mais fácil de ligar os pontos, basta você ir subindo a escala de quem é o menor contexto para o maior.
Faz sentido?