我正在构建一个文章系统,每篇文章都会有一个与之关联的标签(类似于此网站上的标签)。
表格设置如下:
Article_Table
Article_ID | Title | Author_ID | Content | Date_Posted | IP ...
Tag_Table
Tag_ID | Name ...
Tag_Intersect_Table
Tag_ID | Article_ID
是否可以在一次数据库调用中查询文章及其所有相关标签?如果是这样,这是怎么做到的?
答案 0 :(得分:2)
您正在寻找SQL中的JOIN
:
SELECT
Article_ID, Title, TT.Name as 'Tag_Name'
FROM
Article_Table AT
INNER JOIN Tag_Intersect_Table TI
ON AT.article_id = TI.article_id
INNER JOIN Tag_Table TT
ON TI.tag_id = TT.tag_id
WHERE
article_id = @my_article_id
将两个实体表连接到具有自然连接语法的相同交集表。
请注意,在此结果集中,标记和文章的每个组合都有一行,因此对于每个标记,article_id和title将一遍又一遍地重复。如果您只是查询一篇文章并希望只获取所有代码的名称,则可以将SELECT
列表限制为TT.name
。