非线性数据库检索

时间:2010-06-08 02:15:19

标签: php jquery sql database oop

我正在构建一个文章系统,每篇文章都会有一个与之关联的标签(类似于此网站上的标签)。

表格设置如下:

Article_Table
  Article_ID | Title | Author_ID |  Content | Date_Posted | IP ... 

Tag_Table
  Tag_ID | Name ...

Tag_Intersect_Table
  Tag_ID | Article_ID 

是否可以在一次数据库调用中查询文章及其所有相关标签?如果是这样,这是怎么做到的?

1 个答案:

答案 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