我有一个存储产品组的表。
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_product 的 id_group。
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
)
但它显然没有给我我正在寻找的结果。不知道是我想的太简单还是太复杂。
注意:当然 id_product 值将在 SQL 中动态生成。它最终将与 PHP/Codeigniter 一起使用
背景信息:每个产品都有一个价格,但产品可以在一个有套餐价格的产品组中。这就是为什么我需要知道每个订单的产品是否在一个组中。