关于将来自两个表的数据与多对多关系组合的问题

时间:2011-01-16 11:57:39

标签: database database-design

有没有人可以解释(或链接到一个好的教程)如何组合来自两个与'link-table'连接的表的数据?

  • 一个表包含问题
  • 一个表包含类别
  • 一个表包含question_categories

每个问题属于许多类别,每个类别都有很多问题。

链接表包含两个id,categoryID和questionID(它们是表中的主键),其中包含类别和问题表的外键。

但是我并不完全理解我如何编写一个SQL选择,例如显示ID 2所属的类别问题。

非常感谢您的全面解释!

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用JOIN子句连接表。

SELECT Q.* 
FROM question Q
  INNER JOIN question_categories QC
    ON q.questionId = QC.questionID
WHERE QC.categoryID = 2

要打破它:

SELECT Q.*  -- Get all fields from the alias Q (though you should specify fields)
FROM question Q -- From the question table, aliased Q
  INNER JOIN question_categories QC -- Join on the question_categories table (QC)
    ON q.questionId = QC.questionID -- Using the questionIds on both tables as join criteria
WHERE QC.categoryID = 2 -- constrain to only categoryId of 2

根据评论中的要求编辑(按QuestionId分类的示例):

SELECT C.* 
FROM category C
  INNER JOIN question_categories QC
    ON C.categoryId = QC.categoryID
WHERE QC.questionID = 1