2011-08-28 86 views
0

我有MySQL查询问题,我卡住了...问题与MySQL查询

我交了许多标签,我想,让用户获得与choosen标签的帖子。我像这样在表格中存储关于标签的信息:

Tag_warp(
id_tag_wrap, 
id_tag, 
id_post) 

我需要选择具有选定标签的不同帖子。你有想法如何做到这一点?如果我要求:id_tag = "5" AND id_tag= "2"我没有结果(这是显而易见的),如果我要求:id_tag = "5" OR id_tag= "2"我有id_post结果有2或5,但我只需要这些帖子都有id_tag。

有什么建议吗?

回答

3

您可以group by岗位,并要求每个岗位有两个标签:

select id_post 
from tag_warp 
where id_tag in (2,5) 
group by 
     id_post 
having count(distinct id_tag) = 2 
+0

谢谢,你说得对。 – baranq

0

你可以这样说:

SELECT * FROM Tag_warp 
WHERE tag_id IN (2, 5) 
GROUP BY post_id 
HAVING COUNT(post_id) = 2 

这将返回有两个标签2和5的帖子

+0

如果没有'count(distinct ...)',它也会返回标签2两次的帖子 – Andomar

+0

我假设一个帖子不能有两次相同的标签 – arnaud576875

+0

''(tag_id,post_id)''这将工作正常 – Andomar