0

我有一个正在处理的厨房食谱脚本,但无法访问连接表中的字段。我的表设置如下:

ingredients
-----------
ingredient_id (pk)
ingredient_name (pk)
ingredient_calories (pk)

recipes
-------
recipe_id (pk)
recipe_name (pk)

meals
-----
meal_id (pk)
meal_name (pk)

recipe_has_ingredients
----------------------
recipe_id (fk)
ingredient_id (fk)

meal_has_recipes
----------------
meal_id (fk)
recipe_id (fk)

一份食谱包含许多成分,一顿饭包含许多食谱。

问题是:

虽然我可以从 recipe_has_ingredients 中选择 SUM(ingredient_calories),但我无法通过 meal_has_recipes 表(计算一餐中的总卡路里)弄清楚如何做到这一点。

任何帮助是极大的赞赏 :)

4

1 回答 1

1

您对事实表成分、膳食和食谱的主键进行了过度约束。只需使用 id 字段作为 pk。

您可以在任何名称字段上创建唯一约束。

配方有成分表应该有 recipe_id 和成分_id 作为复合主键。

这顿饭有食谱表应该有 meal_id 和 recipe_id 作为复合主键。

一顿饭的卡路里查询现在是

 select meal_name, sum ( ingredients_calories)   from

    meals, meal_has_recipes, recipes_has_ingredients, recipes, ingredients

   where

      meal_name = ' good   food'   

      and   meal_has_recipes.meal_id =  meals.meal_id 

      and   meals_has_recipes.recipe_id = recipes.recipe_id

      and   recipes.recipe_id = recipes_has_ingredients.recipe_id

      and    ingredients.ingredients_id = recipes_has_ingredients.ingredients_id;
于 2012-08-02T00:12:09.407 回答