sql >> Database teknologi >  >> RDS >> Mysql

Mysql forbinder fire tabeller og viser NULL værdi

Følgende skal returnere alle elever med score fra eksamen 32, hvis de findes.

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-klausul brugte ikke noget fra students_subjects eller aggregerede funktioner, så jeg er ikke sikker på, hvad joinforbindelsen til den var til? Måske kan du starte med ovenstående og bygge derfra.

Edit:Ny strategi baseret på min første kommentar. Prøv at finde alle elever, og find derefter resultater, der findes, null hvis 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. Hvordan kan jeg beskrive en tabel i Oracle uden at bruge kommandoen DESCRIBE?

  2. hvordan man indstiller variabel værdi i mysql CREATE TABLE forespørgsel? Java

  3. MySQL - Er det muligt at få alle underpunkter i et hierarki?

  4. Hvilken tegnkodning er den bedste til japansk sprog til DB-, php- og html-display?