У меня проблема с запросом mysql, и я застрял ...

У меня есть сообщение с множеством тегов, и я хочу, чтобы пользователи могли получать сообщения с выбранными тегами. Я храню информацию о тегах в такой таблице:

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.

Любой совет?

0
baranq 28 Авг 2011 в 14:33

2 ответа

Лучший ответ

Вы можете group by публиковать и требовать, чтобы каждое сообщение имело оба тега:

select  id_post
from    tag_warp
where   id_tag in (2,5)
group by
        id_post
having  count(distinct id_tag) = 2
3
Andomar 28 Авг 2011 в 10:35

Сделать это можно так:

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

Это вернет сообщения с тегами 2 и 5.

0
Arnaud Le Blanc 28 Авг 2011 в 10:44