【发布时间】:2012-06-22 15:54:53
【问题描述】:
我有 4 张桌子
POST:
id
POST_TAG:
post_id
tag_id
value
TAG:
id
SEARCH:
tag_id
post_tag_value
我需要在 SEARCH 表中查询具有 all 标签和值作为行的 posts(而不仅仅是标签的一个相等值):
编辑:很抱歉没有提供当前的查询和足够的信息。
SELECT POST.id FROM POST,POST_TAG, SEARCH
WHERE
POST.id = POST_TAG.post_id AND
POST_TAG.tag_id= SEARCH.tag_id AND
POST_TAG.value = SEARCH.value;
如果 SEARCH 表只有一行,它就可以工作。问题是,当它有更多时。结果应该更少,但实际上更多(如果用 2 行测试,正确的结果是重复的行;我正在寻找 intersection 而不是 union)
添加了 sqlfiddle:http://sqlfiddle.com/#!2/9cfb9/1
查询的结果是 '1','1','2' 。它应该只有“1”,因为它有两个“标签”,而“2”只有一个。
【问题讨论】:
-
太棒了。让我们看看到目前为止您有什么查询,有人会帮助您(将其编辑到您的问题中,而不是将其添加到 cmets)。
-
至少在sqlfiddle.com上提供一些数据
-
阅读这个问题有很多方法可以做到这一点:How to filter SQL results in a has-many-through relation
-
你以前用过SQL吗?你已经尝试了吗?
-
要求不太清楚。显示示例数据和所需的输出。
标签: mysql sql sql-match-all