sql >> Databáze >  >> RDS >> Mysql

Mysql spojí čtyři tabulky a zobrazí hodnotu NULL

Následující by mělo vrátit všechny studenty se skóre ze zkoušky 32, pokud existují.

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

Vaše klauzule select nepoužívala nic z students_subjects nebo agregačních funkcí, takže si nejsem jistý, k čemu bylo připojení k ní? Možná můžete začít s výše uvedeným a stavět odtud.

Edit:Nová strategie založená na mém prvním komentáři. Pokuste se najít všechny studenty a poté najděte existující skóre, pokud žádné, null.

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. Zápis do souboru JSON pomocí CodeIgniter

  2. Získejte poslední ID vložení s Oracle 11g pomocí JDBC

  3. Jak předat parametr dotazu mssql v uzlu js

  4. Jak mám interpretovat Select Distinct aliasRefForMe.field1 From [email protected] aliasRefForMe