[英]How do I list related blog posts ordered by the number of common tags?
我想显示相关博客文章的列表,并且希望该列表按它们在当前文章中具有的常用标签数进行排序。 每个帖子可以具有与其关联的多个标签。 这是我的表结构:
[帖子] <-[帖子到联接表]-> [标签]
我正在使用PHP和MySQL-我可以在一个查询中执行此操作吗?
确保您可以在一个查询中执行此操作:
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;
关于什么...:
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)表中的两个外键都是?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.