如果它们与数组中的所有项目匹配,我在尝试从表中检索所有产品 ID 时遇到问题,在这种情况下,仅当产品包含用户搜索的所有成分时才返回产品。
表看起来像这样
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。我如何让它匹配?我希望我能够以一种可以理解的方式描述这个问题,我真的很难绕着它问一个问题。