我有两个表通过关联表链接多对多关系。
想法是搜索一个或多个成分以返回一个或多个食谱,而不返回相同食谱的倍数。
Recipe_Table Recipe_ID Recipe_Name
Ingredients_Table Ingredients_Table Ingredient_ID Ingredient_Name
Associative_Table 成分_ID(FK) Recipe_ID(FK)
我的查询如下:
SELECT r.recipe_name, i.ingredient_name, ri.amount FROM recipes r
INNER JOIN recipes_ingredients ri on r.recipe_id = ri.recipe_id
INNER JOIN ingredients i on ri.ingredient_id = i.ingredient_id
WHERE i.ingredient_name IN ('eggs', 'flour');
这样可以正常工作,但会返回同一食谱的倍数,例如,如果我查询“鸡蛋”这样的话。和'面粉'它返回Pancakes两次,而我只希望它匹配一次。
答案 0 :(得分:0)
您需要在最后一个查询中添加 group by Recipe_ID 。
答案 1 :(得分:0)
嗯,很多人可能会分成两个一对一的方向。
喜欢, 1 食谱 N Ingerdients。或此1 Ingerdient用于那么多食谱。
现在,这取决于您现在要去的方向:您是否正在尝试确定使用特定成分的食谱? 或者您打算选择通过食谱产生成分列表的记录?
知道这一点,你可以正确地进行分组/分离/聚合。
那么你要做什么?