【发布时间】:2013-07-25 16:37:32
【问题描述】:
我有三个表:image、tag 和 image_tag_link
- 图像包含图像数据和
image_id (pk) - 标签包含标签和
tag_id (pk) - i
mage_tag_link将两者与image_id和tag_id (fk)连接起来。
我想获取给定标签 ID 列表的所有相关标签。例如,如果我有三个共享两个标签的图像,除其他外,我只想检索给定过滤器的这两个标签(它们都有共同的标签)。
我目前正在使用(简化为只使用链接表):
select itl1.tag_id
from image_tag_link itl1
inner join image_tag_link itl2 on itl2.image_id = itl1.image_id
where itl2.tag_id in (:list_of_tag_ids)
group by itl1.tag_id;
但是,这为我提供了所有符合过滤条件的图像的所有标签。
任何帮助将不胜感激。
【问题讨论】:
-
你不能做
HAVING COUNT(DISTINCT )> 2 或 3 随便你.. -
我试过了,不幸的是它给了我同样的结果。我已经尝试过使用子查询和其他各种建议来获取堆栈溢出时发现的项目和标签,但这里的问题是如何只获取所有图像共有的标签而不是更多。
-
先获取图片数量再做
HAVING COUNT( DISTINCT ) = no_of_images.怎么样?