我有一个网站上的项目列表.每个项目都附有几个类别,让我们称这些类别为电影类型.在高级搜索中,我让人们选中他们喜欢的类型的复选框,然后它会显示与任何所选类型相匹配的电影列表.
我有这样的查询:
AND column IN ('5', '8', '9')
Run Code Online (Sandbox Code Playgroud)
这里的问题是,如果你选择"动画"和"恐怖",你会得到一堆迪士尼卡通片("动画片")和SAW系列片("恐怖片").
我希望将搜索调整为全包,因此它只返回与所有选定类型匹配的结果,因此将返回标记为"动画"和"恐怖"的项目.
item_id和category_id对存储在单独的表中.因此,对于ID为55的电影,可能有4种类型,因此将有4行,其中item_id = 55,而category_id等于4类别ID.
Joe*_*lli 22
编辑:修改我的答案,以更贴近OP的编辑问题.
select i.MovieName
from item i
inner join ItemCategory ic
on i.item_id = ic.item_id
where i.item_id = 55
and ic.category_id in ('5','8','9')
group by i.MovieName
having count(distinct ic.category_id) = 3
Run Code Online (Sandbox Code Playgroud)