mysql标签系统

时间:2012-11-07 14:47:48

标签: mysql wordpress tags

我需要一些关于mysql查询的帮助

我正在使用wordpresses标记系统和我自己设计的一些表

这个想法是撤回一个与原帖有共同标记的项目列表,我会尽力解释

假设你有一个帖子有5个标签tagA tagB tagC等等

我想在mysql上运行一个查询,该查询会根据其他项共有多少个标签来回退一个列表

我想它会根据与原始帖子相关联的标签数量创建一个新列。

所以,如果一个帖子有相同的5个标签,我会看到post_id,新列中有5个

| post_id | in_common |
-----------------------
|   35    |     5     |
-----------------------
|   109   |     5     |
-----------------------
|   100   |     4     |

等等。

但我甚至不确定从哪个查询开始

这些标签是在wordpresses中,并根据我可以使用的单个标签获取所有帖子

SELECT * 
FROM wp_posts 
inner JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_ID 
inner JOIN wp_terms ON wp_terms.term_id = wp_term_relationships.term_taxonomy_id 
WHERE wp_terms.name =  'tax'

1 个答案:

答案 0 :(得分:0)

正如你提到的wordpress我猜你正在使用PHP。所以我建议使用PHP来构建当前帖子的term_taxonomy_id的逗号分隔(并且正确转义)列表,然后使用这样的简单查询来获取所有包含标签的帖子的列表共同点:

SELECT wp_posts.ID, COUNT(*)
FROM wp_posts
JOIN wp_term_relationships ON wp_posts.ID = wp_term_relationships.object_ID 
WHERE term_taxonomy_id IN ('.$the_list.')
GROUP BY wp_posts.ID