Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql dołącza do czterech stołów i pokazuje wartość NULL

Poniższe informacje powinny zwrócić wszystkich uczniów, z wynikami z egzaminu 32, jeśli istnieją.

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

Twoja klauzula select nie używała niczego z funkcji students_subjects ani funkcji agregujących, więc nie jestem pewien, do czego służyło sprzężenie? Być może możesz zacząć od powyższego i budować stamtąd.

Edycja:Nowa strategia oparta na moim pierwszym komentarzu. Spróbuj zlokalizować wszystkich uczniów, a następnie znajdź istniejące wyniki, null, jeśli żaden.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uzyskać wartość SQL_CALC_FOUND_ROWS za pomocą przygotowanych instrukcji?

  2. Utwórz nową tabelę, wybierając dane z innych tabel za pomocą CREATE TABLE AS

  3. Czy mogę polegać na instrukcji using w celu zamknięcia połączeń MySQL?

  4. Czy istnieje sposób na wypełnienie tabeli MySQL 5.7 danymi z pliku json z podziałami wierszy na Win7?

  5. MySQL:zaktualizuj wszystkie wiersze w tabeli pasujące do wyników innego zapytania