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

Fazendo join incluindo a tabela Matricula

Eu fiz um Join com a tabela Matricula para relcionar as Tabelas Aluno e Curso:

SELECT CURSO.NOME, AVG(NOTA.NOTA) FROM NOTA JOIN RESPOSTA ON RESPOSTA.ID = NOTA.RESPOSTA_ID JOIN EXERCICIO ON EXERCICIO.ID = RESPOSTA.EXERCICIO_ID JOIN SECAO ON SECAO.ID = EXERCICIO.SECAO_ID JOIN CURSO ON CURSO.ID = SECAO.CURSO_ID JOIN MATRICULA ON MATRICULA.CURSO_ID = CURSO.ID JOIN ALUNO ON ALUNO.ID = MATRICULA.ALUNO_ID WHERE ALUNO.NOME LIKE '%SILVA%' OR ALUNO.NOME LIKE '%SANTOS' GROUP BY CURSO.NOME;

Mas a resolução do exercício faz um JOIN entre as tabelas ALUNO e RESPOSTA.

Os resultados também foram um pouco diferentes:

Meu resultado: +-----------------------+----------------+ | NOME | AVG(NOTA.NOTA) | +-----------------------+----------------+ | SQL e banco de dados | 6.2727 | | Scrum e métodos ágeis | 5.7778 | +-----------------------+----------------+

Resultado do Alura:

-----------------------+-------------+ | nome | avg(n.nota) | +-----------------------+-------------+ | SQL e banco de dados | 6.2857 | | Scrum e métodos ágeis | 5.7778 | +-----------------------+-------------

Gostaria de saber se devo tentar fazer a menor quantidade de JOIN possivel e entender o porque dessa diferença.

1 resposta

Neste caso o impacto de utilizar um join a mais não seria tanto, contudo em tabelas com mais registros poderia ser grande. Além disso, como a tabela Resposta contém o ID do aluno já pode ser utilizada.