配列内のすべてのアイテムと一致する場合、テーブルからすべての productID を取得しようとしているときに問題に直面しています。この場合、ユーザーが検索したすべての成分が含まれている場合にのみ製品を返します。
表はこんな感じ
ID produktID ingredientID
----------------------------
1 418 1
2 418 2
3 418 3
4 416 4
5 411 1
6 411 5
7 411 6
主な情報が格納されている製品テーブルからこのテーブルを結合します。クエリの目的は、すべての成分 ID が指定された配列と一致する場合にのみ、製品 ID を取得することです。使用してみましWHERE ingredientID IN(1,5,6)
たが、常に OR ステートメントであることが判明し、成分のいずれかが一致するすべての ID が返されます。たとえば、(1,5,6) または (5,6) を渡すと製品 ID 411 が返されますが、(2,5,6) を渡すと返されません。
私が試したクエリは次のようになります (簡略化すると、ブランドやカテゴリなどの他の関係への 5 方向の結合の一部です)
SELECT productID FROM products_ingredients_mm WHERE ingredientID IN (1,5,6) GROUP BY productID
しかし、結果には 418 も含まれています。一致させるにはどうすればよいですか?問題をわかりやすい方法で説明できたことを願っています。質問するために頭を悩ませるのは本当に難しいです。