【问题标题】:Join on multiple foreign key values加入多个外键值
【发布时间】:2023-03-08 09:53:02
【问题描述】:

如何使用外键中的多个值从其他表中获取记录。 例如我以前是新学生主题的故事 ID。我正在从主题表中获取主题名称。但现在我正在集成多个科目的功能,这意味着我在学生中的 ID 列看起来像:120、140(这意味着两个科目)现在我如何从另一个表中获取科目名称(例如,我希望它显示为英语, MATHS 在我加入时列中)。

这是我当前的查询

SELECT t.*
FROM
  (SELECT ROWNUM AS rn,
          t.*
   FROM
     (SELECT t.*,
             s.subject_name
      FROM STUDENT t
      LEFT JOIN SUBJECTS s ON t.subject_id=s.subject_id) t) t
WHERE rn BETWEEN ? AND ?

【问题讨论】:

  • 您确定您使用的是 MySQL 吗?它没有ROWNUM
  • 不要将逗号分隔的值放在表格列中。使用多对多关系表,每行一对。

标签: mysql foreign-keys


【解决方案1】:

现在你在学生和书籍之间建立了多对多的关系。您必须更改数据库结构以获得最佳实践。

解释here

让我在这里非常简要地解释一下。

在这种情况下,制定了第三张表,通常称为连接表。两个表的所有 id 实际上都是该表的行。

示例。

您可以通过以下方式实现它。

 student: student_id, first_name, last_name
 books: book_id, book_name, book_author_etc
 student_books: book_id, student_id     # the junction table

示例查询:

 // To get all the books for a student. 

 SELECT b.book_id, name
    FROM student_books sb 
    INNER JOIN books b ON b.book_id = sb.book_id
    WHERE sc.student_id = Y

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 2023-03-12
    • 2021-03-20
    • 2022-11-07
    • 1970-01-01
    • 2021-08-14
    • 2016-06-26
    相关资源
    最近更新 更多