Połączenie wewnętrzne z 3 tabel w mysql

Chcę wybrać dane z większej liczby tabel z łączeniem wewnętrznym.

To moje stoły.
Student (studentId, firstName, lastname)
Exam (examId, name, date)
Grade (gradeId, fk_studentId, fk_examId, grade)

Chcę napisać oświadczenie, które pokazuje, który egzamin, ocenę i datę wszyscy uczniowie byli. Posortowane po dacie.

To moje oświadczenie. Działa, ale chcę się upewnić, że robię to poprawnie.
SELECT
  student.firstname,
  student.lastname,
  exam.name,
  exam.date,
  grade.grade
FROM grade
  INNER JOIN student
    ON student.studentId = grade.gradeId
  INNER JOIN exam
    ON exam.examId = grade.gradeId
ORDER BY exam.date
Author: Muhammad Raheel, 2013-04-15

3 answers

Prawie poprawnie.. Spójrz na joins, odwołujesz się do niewłaściwych pól

SELECT student.firstname,
       student.lastname,
       exam.name,
       exam.date,
       grade.grade
  FROM grade
 INNER JOIN student ON student.studentId = grade.fk_studentId
 INNER JOIN exam ON exam.examId = grade.fk_examId
 ORDER BY exam.date
 65
Author: agim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-15 10:57:58

Poprawne stwierdzenie powinno brzmieć:

SELECT
  student.firstname,
  student.lastname,
  exam.name,
  exam.date,
  grade.grade
FROM grade
  INNER JOIN student
    ON student.studentId = grade.fk_studentId
  INNER JOIN exam
    ON exam.examId = grade.fk_examId
ORDER BY exam.date

Tabela jest referowana do innej na podstawie zdefiniowanej relacji klucza obcego. Jeśli chcesz, aby dane były wyświetlane jako zapytane, powinieneś odpowiednio odnieść się do identyfikatorów. Tak więc należy kierować id do odpowiednich kluczy obcych w tabeli, a nie tylko na id, które nie definiuje odpowiedniej relacji

 14
Author: Ajo Koshy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-15 10:56:55
SELECT
  student.firstname,
  student.lastname,
  exam.name,
  exam.date,
  grade.grade
FROM grade
 INNER JOIN student
   ON student.studentId = grade.fk_studentId
 INNER JOIN exam
   ON exam.examId = grade.fk_examId
 GROUP BY grade.gradeId
 ORDER BY exam.date
 2
Author: Suhel Meman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-15 11:02:07