2009-08-01 99 views
2

我有这个表:帖子(post_is,标题和文本),标签(tag_id,标签),Post_tag_nn(id,tag_id,post_id)。我想要一个特定的帖子,例如4个标签标记所有这些标签的帖子,然后是这些标签中的任意三个的所有帖子,然后是具有任何两个这些标签的所有帖子等等。我如何建立一个SQL查询为此目的(在PHP中,它似乎像一个回溯问题=给定集的所有子集)。查找与标签有关的帖子与mysql中的一个特定帖子

回答

6

有一个查询查找当前职位的标签,像

SELECT tag_id 
FROM Post_tag_nn 
WHERE post_id = $post_id; 

然后使用这些标签的ID,这个查询应该返回你的帖子的ID与4,3,2,...匹配标签:

+0

它的工作原理。谢谢! – Daniel 2009-08-01 08:03:52

0

如果你打算用任何一个标签来拉下每一篇文章,你可能最好只是对每个标签运行一个查询来将所有帖子拉到该标签,然后生成你自己。

+0

我正在寻找一个sql方法来做到这一点,比硬编码更有效。 – Daniel 2009-08-01 07:52:39

0

喜欢的东西:

select t.id, t.tag_id, p.post_id, p.title, p.text 
    from post_tag_nn as t, posts p 
    where p.id = t.post_id 
    order by t.id 

,然后执行组在你的代码。你当然可以做两个不同的查询,其中一个是找出你的标签的顺序和数量,然后是你为每个标签拉回帖子的位置。

相关问题