Mysql 选择值x,其中x具有相同的未知值,而值y位于数组中

Mysql 选择值x,其中x具有相同的未知值,而值y位于数组中,mysql,sql,select,relational-division,Mysql,Sql,Select,Relational Division,我有一个存储产品组的表 table "products_groups" id | id_group | id_product ============================ 1 | 1 | 1 2 | 1 | 2 3 | 1 | 3 4 | 2 | 1 5 | 2 | 2 6 | 3 | 2 我需要一个SQL查询来查找包含给定数组中所有id_产品的id_组 p

我有一个存储产品组的表

table "products_groups"

id  |  id_group | id_product
============================
 1  |  1        | 1
 2  |  1        | 2
 3  |  1        | 3
 4  |  2        | 1
 5  |  2        | 2
 6  |  3        | 2
我需要一个SQL查询来查找包含给定数组中所有id_产品的id_组

product_ids = array(1);       // should return no results
product_ids = array(1,2);     // should only return id_group 2
product_ids = array(1,2,3);   // should only return id_group 1
product_ids = array(1,2,3,4); // should return no results
我到处玩/找,结果被困在了家里

SELECT p1.id_group
FROM products_groups p1, products_groups p2
WHERE p1.id <> p2.id
AND p1.id_group = p2.id_group
AND (
    p1.id_product = 1 
    OR p1.id_product = 2
    OR p1.id_product = 3
)
选择p1.id\u组
来自产品组p1、产品组p2
其中p1.id p2.id
p1.id_组=p2.id_组
及(
p1.id_产品=1
或p1.id_乘积=2
或p1.id_乘积=3
)
但它显然没有给我我想要的结果。我不知道我的想法是太简单还是太复杂

注意:当然,id_产品值将在SQL中动态生成。它最终将与PHP/Codeigniter一起使用


背景信息:每个产品都有一个价格,但产品可以位于具有包装价格的产品组中。这就是为什么我需要知道每个订单的产品是否在一个组中。

这个问题称为
关系划分

或者像这样的

SELECT  id_group
FROM    products_groups
GROUP   BY id_group
HAVING  SUM(id_product IN (1,2)) = COUNT(*) AND
        COUNT(*) = 2

非常好用,非常感谢!我将研究关系划分。并请在此列
id\u组、id\u产品
上实施唯一的多列约束。完成!谢谢你给我额外的小费。
SELECT  id_group
FROM    products_groups
GROUP   BY id_group
HAVING  SUM(id_product IN (1,2)) = COUNT(*) AND
        COUNT(*) = 2