Berikut ini harus mengembalikan semua siswa, dengan nilai dari ujian 32 jika ada.
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
Klausa pilih Anda tidak menggunakan apa pun dari siswa_subjek atau fungsi agregat, jadi saya tidak yakin untuk apa bergabung? Mungkin Anda bisa mulai dengan yang di atas dan membangun dari sana.
Sunting:Strategi baru berdasarkan komentar pertama saya. Coba dan temukan semua siswa kemudian temukan skor yang ada, null jika tidak ada.
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