Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Mysql junta quatro tabelas e mostra o valor NULL


O seguinte deve retornar todos os alunos, com as notas do exame 32, se existirem.
SELECT scores.result,students.id,exam.name, exam.id
FROM exam
INNER JOIN scores ON exam.id = scores.exam_id
RIGHT OUTER JOIN students ON scores.user_id = students.user_id
WHERE exam.id = 32

Sua cláusula select não usou nada de students_subjects ou funções agregadas, então não tenho certeza para que serve a junção? Talvez você possa começar com o acima e construir a partir daí.

Edit:Nova estratégia baseada no meu primeiro comentário. Tente localizar todos os alunos e encontre as pontuações que existem, nulas se nenhuma.
SELECT scores.result,students.id,exam.name, exam.id
FROM exam
INNER JOIN students_subjects ON students_subjects.group_id = exam.group_id
INNER JOIN students ON students_subjects.user_id = students.user_id
LEFT OUTER JOIN scores ON scores.user_id = students.user_id
  AND scores.exam_id = exam.id
WHERE exam.id = 32