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/

10-11 03:41