我有两张桌子:
成分
| id | iName |
-----------------------------
| 101 | Curcumin |
| 102 | Riboflavin |
| 103 | Protease |
| 104 | Tartrazine |
| 105 | Amylase |
foodproduct_ingredient
| foodproduct_id | ingredient_id |
---------------------------------------
| 1 | 101 |
| 1 | 102 |
| 1 | 104 |
我只想获得每种食品的清单iName。 例如,当我想在 foodproducts.id = 1 中获取iName时必须
| iName |
----------------------
| Curcumin |
| Riboflavin |
| Tartrazine |
我试图插入查询:
SELECT ingredients.iName FROM ingredients INNER JOIN foodproduct_ingredient
ON ingredients.id = foodproduct_ingredient.foodProduct_id
WHERE ingredients.id =
(SELECT foodproduct_ingredient.ingredient_id FROM foodproduct_ingredient INNER JOIN foodproducts
ON foodproducts.id = foodproduct_ingredient.foodProduct_id
WHERE foodproducts.id = 1)
但它返回子查询返回超过1行
有人能帮助我吗?谢谢:))
*注意:表格 foodproducts 仅用于加入以获取食品产品的ID
答案 0 :(得分:3)
我认为你应该使用IN
子句
SELECT ingredients.iName FROM ingredients INNER JOIN foodproduct_ingredient
ON ingredients.id = foodproduct_ingredient.foodProduct_id
WHERE ingredients.id In
(SELECT foodproduct_ingredient.ingredient_id FROM foodproduct_ingredient INNER JOIN foodproducts
ON foodproducts.id = foodproduct_ingredient.foodProduct_id
WHERE foodproducts.id = 1)
顺便说一句,你甚至不需要子查询。尝试使用以下查询
select i.iName from ingredients i
join foodproduct_ingredient fi
on fi.ingredient_id = i.id
where fi.foodproduct_id = 1