它说student_id不存在于表中,但它确实存在?

时间:2017-02-21 13:59:51

标签: mysql

它说student_id不存在,但它显然存在,我只想将这些表连接在一起。 (Mysql 5.7)

enter image description here

4 个答案:

答案 0 :(得分:0)

那是因为你没有在主题表中创建student_id 你必须在subject_id列之后创建student_id

答案 1 :(得分:0)

在您的主题表上缺少

student_id,在您放入外键之前,在查询中添加student_id int unsigned not null以创建主题表。

答案 2 :(得分:0)

您需要在'subject'表中添加'student_id'列。错误表示“主题”表。

您正尝试将“subject”表中的“student_id”列标记为引用“学生”表中“student_id”列的外键。

答案 3 :(得分:0)

正如其他评论Subjects表没有student_id字段,可能不应该有。否则,您将为参加该课程的每位学生重复相同的数据。

所以你做了什么:

  • 创建表格StudentsSubjects就像现在一样(没有Student的外键)
  • 创建一个联结表student_subject {subject_id, student_id},您可以在其中存储每位学生注册的科目。
    • 创建StudentsSubjects
    • 的外键

然后,如果你想获得一个学生注册的科目。

 SELECT st.*, su.*
 FROM Students st
 JOIN Student_Subjects ss      
   ON st.student_id = ss.student_id
 JOIN Subjects su
   ON ss.subject_id = su.subject_id
 WHERE st.student_id = @student_id