mysql - 没有外键的连接表

标签 mysql sql foreign-keys

是否可以在没有外键的情况下连接表? 例如

tbl学生 栏目:

  1. ID
  2. 名字
  3. 姓氏
  4. 中间名

tbl等级 社区:

  1. ID
  2. 测验
  3. 项目
  4. 考试

最终成绩表 栏目:

  1. 名字

  2. 姓氏

  3. 期末成绩

    搜索id可以查看期末成绩吗?

最佳答案

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

例如:

tblGrade

列:

  • 成绩 ID
  • 学生ID
  • 测验
  • 项目
  • 考试

tbl最终成绩

  • 最终成绩 ID
  • 学生ID
  • 期末成绩

然后你可以这样做:

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

关于mysql - 没有外键的连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17291733/

相关文章:

mysql - 根据类别选择项目

sql - 在 SQL GROUP BY 查询中,非聚合列使用什么值?

MySQL 多删除。是否可以多次删除引用的行?

mysql 替换 h2 标签之间的文本

mysql - 计算不为空的列数

mysql - 左连接和右连接是否足够?

mysql - 创建复合外键

mysql - 对具有外键的 mySQL 表进行分区?

mysql - 对单个查询中的多个 Join 感到困惑,Sqlalchemy

java - WHERE 子句问题