无外键加入表

时间:2013-06-25 07:40:02

标签: mysql sql foreign-keys

是否可以连接没有外键的表? 例如

tblstudent 列:

  1. ID
  2. 姓名
  3. 名字
  4. 中间名
  5. tblgrade Comluns:

    1. ID
    2. 测验
    3. 项目
    4. tblfinalgrade 列:

      1. 姓名
      2. 名字
      3. finalgrade

        搜索和ID时是否可以查看最终成绩?

1 个答案:

答案 0 :(得分:1)

tblStudent中的ID没有意义,因为您没有在其他表中引用它。更改您的表格结构以包含此StudentId而不是First NameLast Name

例如:

<强> tblGrade

列:

  • GradeId
  • StudentId
  • 测验
  • 项目
  • 考试

<强> tblFinalGrade

  • FinalGradeId
  • StudentId
  • FinalGrade

然后你可以这样做:

SELECT ID, FirstName, LAstName, Quiz, Project, Exam, FinalGrade
FROM tblStudent
INNER JOIN tblGrade ON tblGrade.StudentId = tblStudent.StudentId
INNER JOIN tblFinalGrade ON tblFinalGrade.StudentId = tblStudent.StudentId

这比加入FirstNameLast Name更好的结构只是因为你有5 John Smith你怎么知道你正在返回正确的成绩?

虽然我对原始设计稍有不同,但您可以通过运行以下查询对现有结构执行相同的查询:

SELECT ID, FirstName, LAstName, Quiz, Project, Exam, FinalGrade
FROM tblStudent
INNER JOIN tblFinalGrade ON tblFinalGrade.FirstName = tblStudent.FirstName AND  tblFinalGrade.LastName = tblStudent.LastName
WHERE tblStudent.ID = 1