1
我想显示相关博客帖子的列表,我希望列表按照它们对当前帖子具有的通用标签的数量进行排序。每篇文章可以有多个与之关联的标签。这里是我的表结构:如何列出按常用标签数排序的相关博客文章?
[文章] < - [帖子到标签接合用表] - > [标签]
我使用PHP和MySQL - 我能做到这一点一个查询?
我想显示相关博客帖子的列表,我希望列表按照它们对当前帖子具有的通用标签的数量进行排序。每篇文章可以有多个与之关联的标签。这里是我的表结构:如何列出按常用标签数排序的相关博客文章?
[文章] < - [帖子到标签接合用表] - > [标签]
我使用PHP和MySQL - 我能做到这一点一个查询?
怎么样...:
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作为职位表的主键,TID作为主键标签表,p2t(post to tag)表中的两个外键?
当然,你可以做到在一个查询:
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;