Inner join with 3 tables in mysql

Zincktest picture Zincktest · Apr 15, 2013 · Viewed 141k times · Source

I want to select data from more tables with Inner join.

These are my tables.

Student (studentId, firstName, lastname)
Exam (examId, name, date)
Grade (gradeId, fk_studentId, fk_examId, grade)

I want to write a statement that shows which exam, grade and date alle the students have been to. Sorted after date.

This is my statement. It runs, but i want to make sure that i am doing it correctly.

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

Answer

agim picture agim · Apr 15, 2013

Almost correctly.. Look at the joins, you are referring the wrong fields

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