以下は、すべての学生を返し、存在する場合は試験32のスコアを返します。
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
select句はstudents_subjectsまたは集計関数から何も使用していなかったので、それへの結合が何のためにあるのかわかりませんか?おそらく、上記から始めて、そこから構築することができます。
編集:私の最初のコメントに基づく新しい戦略。すべての生徒を探して、存在するスコアを見つけます。スコアがない場合はnullになります。
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