【问题标题】:Non-Linear Database Retrieval非线性数据库检索
【发布时间】:2011-02-28 23:30:07
【问题描述】:

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

表格设置如下:

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

Tag_Table
  Tag_ID | Name ...

Tag_Intersect_Table
  Tag_ID | Article_ID 

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

【问题讨论】:

    标签: php jquery sql database oop


    【解决方案1】:

    您正在寻找在 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 和标题将一遍又一遍地重复。如果您只查询一篇文章并且只想获取所有标签的名称,您可以将SELECT 列表限制为仅TT.name

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-25
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-16
      • 2017-11-20
      相关资源
      最近更新 更多