sql >> Database >  >> RDS >> Mysql

Mysql voegt zich bij vier tabellen en toont NULL-waarde

Het volgende zou alle studenten moeten retourneren, met scores van examen 32 als ze bestaan.

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

Je select-clausule gebruikte niets van students_subjects of aggregatiefuncties, dus ik weet niet zeker waar de join voor was? Misschien kun je met het bovenstaande beginnen en van daaruit verder bouwen.

Bewerken:nieuwe strategie op basis van mijn eerste opmerking. Probeer alle leerlingen te lokaliseren en vind scores die bestaan, nul als er geen zijn.

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. WHERE-component kan beter worden uitgevoerd voor IN en JOIN of erna

  2. oracle sql:update indien bestaat, anders invoegen

  3. Inleiding tot soorten grafieken

  4. Reden waarom orakel hoofdlettergevoelig is?