我需要选择表格所有行中包含的所有值 我有表“成分”和ProductIngredient(我有一个产品的配方) 成分
| ingredient_id | name | price |
| 1 | Bla | 100
| 2 | foo | 50
ProductIngredient。
| Product_id | ingredient_id
| 1 | 1
| 1 | 2
| 2 | 1
输出应为
| 1 | Bla |
因为它存在于ProductIngredient的所有行中。
SELECT DISTINCT Ingredient_Id
FROM Ingredients I
WHERE Ingredient_Id = ALL
(SELECT Ingredient_id FROM ProductIngredient PI
WHERE PI.Ingredient_Id = I.Ingredient_Id );
如何修复代码以使其正常工作?
答案 0 :(得分:1)
这将为您提供每种产品的PI中的所有成分。这假设每种产品没有多行用于产品和成分组合。
SELECT I.Ingredient_Id
FROM Ingredients I INNER JOIN ProductIngredient PI
ON PI.Ingredient_Id = I.Ingredient_Id
GROUP BY I.Ingredient_Id
HAVING COUNT(*) >= (SELECT COUNT(DISTINCT Product_id) FROM ProductIngredient)