sql >> Databasteknik >  >> RDS >> Mysql

Mysql slå samman fyra tabeller och visa NULL-värde

Följande bör returnera alla studenter, med poäng från prov 32 om de finns.

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

Din select-sats använde inget från students_subjects eller aggregerade funktioner, så jag är inte säker på vad anslutningen till den var till för? Kanske kan du börja med ovanstående och bygga därifrån.

Edit:Ny strategi baserad på min första kommentar. Försök att hitta alla elever och hitta poäng som finns, null om ingen.

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


  1. Sätt vald resultat i en ksh-variabel

  2. Använder returvärde från DELETE för UPPDATERING i Postgres

  3. Lägg till kolumn efter en annan kolumn

  4. Kan inte infoga icke-latinska symboler i MySQL