mysql中3个表的内部连接
我想从更多具有内部联接的表中选择数据 这些是我的桌子mysql中3个表的内部连接,mysql,database,inner-join,Mysql,Database,Inner Join,我想从更多具有内部联接的表中选择数据 这些是我的桌子 Student (studentId, firstName, lastname) Exam (examId, name, date) Grade (gradeId, fk_studentId, fk_examId, grade) 我想写一份声明,说明所有学生参加的考试、成绩和日期。按日期排序 这是我的声明。它运行,但我想确保我做得正确 SELECT student.firstname, student.lastname, exa
Student (studentId, firstName, lastname)
Exam (examId, name, date)
Grade (gradeId, fk_studentId, fk_examId, grade)
我想写一份声明,说明所有学生参加的考试、成绩和日期。按日期排序
这是我的声明。它运行,但我想确保我做得正确
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
正确的说法应该是:
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
表根据定义的外键关系引用到其他表。如果希望数据显示为查询数据,则应正确引用ID。因此,您应该将id引用到表中正确的外键,而不仅仅是在id上,因为id几乎没有正确定义正确的关系。。看看连接,你指的是错误的字段
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
这里面有什么问题?gradeID列与studentID连接看起来很奇怪?但若你们把结构放在那个里,它会返回你们期望的结果,那个么我猜它是好的……是的,你们做得对。我对mysql不太熟悉,我想确定我做得对。很多时候,我都说了一些正确的话。但这不是正确的方法。在我看来,运行你的语句时,student.studendId=grade.fk_studentId和Exam.examId=grade.fk_examId。是说错误代码:1054。“on子句”@user2231285中的未知列“grade.fk_studentId”您将年级的表定义为
grade(gradeId,fk_studentId,fk_examId,grade)
。因此,它应该有这个答案中所写的专栏,而不是关于这个主题的另一个评价很高的专栏@Ajokoshi的回复真的很好,谢谢。当你发表声明时。是说错误代码:1054。“on子句”中的未知列“grade.fk_studentId”-与@AjoKoshy给您的答案相同!如果您没有字段grade.fk_studentId
,则必须使用正确的字段。
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