Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Mysql verbindet vier Tabellen und zeigt den NULL-Wert an

Im Folgenden sollten alle Schüler zurückgegeben werden, mit Ergebnissen aus Prüfung 32, falls vorhanden.

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

Ihre Auswahlklausel hat nichts von students_subjects oder Aggregatfunktionen verwendet, also bin ich mir nicht sicher, wofür die Verknüpfung war? Vielleicht können Sie mit dem oben Gesagten beginnen und darauf aufbauen.

Bearbeiten:Neue Strategie basierend auf meinem ersten Kommentar. Versuchen Sie, alle Schüler zu finden, und finden Sie dann vorhandene Ergebnisse, null, wenn keine vorhanden sind.

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