製品グループを格納するテーブルがあります。
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
指定された配列にあるすべてのid_productを含むid_groupを見つけるSQLクエリが必要です。
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で使用されます
背景情報:各製品には価格がありますが、製品はパッケージ価格のある製品グループに含めることができます。そのため、製品がグループに含まれているかどうかを注文ごとに知る必要があります。