【问题标题】:How do I list related blog posts ordered by the number of common tags?如何列出按常用标签数量排序的相关博客文章?
【发布时间】:2009-05-04 01:55:15
【问题描述】:

我想显示相关博客文章的列表,并且我希望该列表按照它们对当前文章的常用标签数量进行排序。每个帖子可以有多个与之关联的标签。这是我的表结构:

[帖子] [Tags]

我正在使用 PHP 和 MySQL - 我可以在一个查询中执行此操作吗?

【问题讨论】:

    标签: php mysql tags blogs


    【解决方案1】:

    当然你可以在一个查询中完成:

    SELECT postid, count(tagid) as common_tag_count
    FROM posts_to_tags
    WHERE tagid IN (SELECT tagid FROM posts_to_tags WHERE postid = 2)
    GROUP BY postid ORDER BY common_tag_count DESC; 
    

    【讨论】:

      【解决方案2】:

      那……呢:

      SELECT COUNT(*) AS numcommon, posts.pid, posts.post FROM posts
                     INNER JOIN p2t ON p2t.pid = posts.pid
                     WHERE p2t.tid IN
                     (SELECT p2t.tid FROM p2t
                     INNER JOIN posts ON p2t.pid = posts.pid
                     WHERE posts.pid = 1)
                     AND posts.pid != 1
                     GROUP BY posts.pid
                     ORDER BY numcommon
      

      假设pid为posts表中的主键,tid为tags表中的主键,p2t(post to tag)表中的两个外键?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-22
        • 2019-06-12
        • 1970-01-01
        • 2019-01-13
        • 1970-01-01
        相关资源
        最近更新 更多