项table: items
有许多分类table: taxonomies
使用联接表item_taxonomies (item_id, taxonomy_id)
。
使用分类组搜索项目。
例子:
taxo_group_1 = [1, 2, 3]
taxo_group_2 = [4, 5]
sql应该以这种方式找到所有包含在两个数组中的
items
:如果我有这些元素:
item_1 id=1
taxo_1 id=11
taxo_2 id=12
taxo_3 id=13
item_2 id=2
taxo_3 id=13
taxo_4 id=14
使用
taxonomies
和[11, 12]
搜索将返回[13]
而不是item_1
,因为item_2
具有分类item_1
。in [11, 12] AND in [13]
不会返回,因为它在item_2
中没有分类目前为止:
"taxonomies"."id" IN (11, 12, 13) AND "taxonomies"."id" IN (13)
当然不行了。
最佳答案
您可以使用此查询获得所需的输出:
select item from (
select item, count(distinct taxonomy_id) as count from items
join taxonomies on items.item_id = taxonomies.item_id
where taxonomies.taxonomy_id in (11,12,13)
group by item
) as T where count = 3
关于mysql - SQL:以特定方式包含特定数组的ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49152638/