我在网站上列出了商品。每个项目都有几个附加的类别,我们称这些类别为电影流派。在高级搜索中,我让人们选中他们喜欢的类型的复选框,它弹出与所选任何类型匹配的电影列表。
我有这样的查询:
AND column IN ('5', '8', '9')
这里的问题是,如果您选择“动画”和“恐怖”,则会得到一堆迪斯尼卡通(“动画”)和SAW系列(“恐怖”)。
我想将搜索范围包括在内,因此它只会返回与所有选定流派都匹配的结果,因此将同时标记为“动画”和“恐怖”的项目。
item_id和category_id对存储在单独的表中。因此,对于ID为55的电影,可能会有4种流派,所以会有4行具有item_id = 55,并且category_id等于4个类别ID。
编辑 :修改了我的答案,使其更接近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