在mysql中使用3个表进行内连接

Zin*_*est 27 mysql database inner-join

我想从内部联接的更多表中选择数据.

这些是我的表.

Student (studentId, firstName, lastname)
Exam (examId, name, date)
Grade (gradeId, fk_studentId, fk_examId, grade)
Run Code Online (Sandbox Code Playgroud)

我想写一份声明,说明学生去过的考试,成绩和日期.按日期排序.

这是我的发言.它运行,但我想确保我正确地做到了.

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
Run Code Online (Sandbox Code Playgroud)

agi*_*gim 56

几乎正确..看看连接,你指的是错误的字段

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
Run Code Online (Sandbox Code Playgroud)


Ajo*_*shy 12

正确的陈述应该是:

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
Run Code Online (Sandbox Code Playgroud)

根据定义的外键关系,将表引用到其他表.如果您希望数据显示为查询,则应正确引用ID.因此,您应该将id引用到表中的正确外键,而不是仅仅引用未定义正确关系的id