1
resposta

Porque tenho que selecionar as tabelas(resposta,exercicio, secao) para ver a media das notas dos aluno por curso.

select c.nome, avg(n.nota) as media 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 where a.nome like '%Santos%' or a.nome like '%Silva%' group by c.nome;

1 resposta

Isto é necessário porque cada tabela armazena uma parte da informação.

Para você encontrar a NOTA precisa acessar a tabela RESPOSTA.

Para encontrar a RESPOSTA você precisa identificar de qual EXERCICIO é a resposta.

Cada EXERCICIO está ligada a uma SEÇÃO e a SEÇÃO está ligada ao CURSO.

Então, faz-se necessário envolver todas as tabelas de CURSO até a NOTA.

CURSO > SEÇÃO > EXERCÍCIO > RESPOSTA > NOTA

select
  c.nome, 
  avg(n.nota) as media 

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 

where a.nome like '%Santos%' or a.nome like '%Silva%' 

group by c.nome;