这是我的情景:我有一个包含食谱的表,另一个包含与食谱相关的成分(recipe_ingredients)。
TABLE RECIPE_INGREDIENTS:
ID RECIPE_ID INGREDIENT_ID
1 1 6
2 2 3
3 2 4
在我的情况下,我想要返回用户介绍的一些食谱(可能是一个或多个)的所有食谱,在这个例子中,让我们说所有食谱的成分3和4.当我只查询一种成分时,没有问题,但我不知道如何实现多个... 提前谢谢!欢迎任何建议!
答案 0 :(得分:3)
听起来你想要这个:
select RECIPE_ID
from RECIPE_INGREDIENTS
where INGREDIENT_ID in (3, 4)
group by RECIPE_ID
having count(distinct INGREDIENT_ID ) >=2
然后,如果你想把它加入你的食谱表:
select r.*
from recipes r
inner join
(
select RECIPE_ID
from RECIPE_INGREDIENTS
where INGREDIENT_ID in (3, 4)
group by RECIPE_ID
having count(distinct INGREDIENT_ID ) >=2
) ri
on r.RECIPE_ID = ri.RECIPE_ID
答案 1 :(得分:3)
假设您有3个食谱配方,配料和食谱成分
SELECT
r.*,
GROUP_CONCAT(i.ingradients)
FROM recipes as r
LEFT JOIN recipe_ingrediants as ri ON ri.recipe_id = r.id
LEFT JOIN ingrediants as i ON r.id = ri.ingrediant_id
GROUP BY r.id