有没有人可以解释(或链接到一个好的教程)如何组合来自两个与'link-table'连接的表的数据?
每个问题属于许多类别,每个类别都有很多问题。
链接表包含两个id,categoryID和questionID(它们是表中的主键),其中包含类别和问题表的外键。
但是我并不完全理解我如何编写一个SQL选择,例如显示ID 2所属的类别问题。
非常感谢您的全面解释!
提前致谢。
答案 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