2017-02-10 79 views
0

如何使用外键中的多个值从其他表中获取记录。 例如我之前是一名新学生的主题故事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 ? 
+0

你确定你使用MySQL?它没有'ROWNUM'。 – Barmar

+1

*不*在表格列中放置逗号分隔值。使用多对多关系表,每行一对。 – Barmar

回答

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