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)

レシピには多くの材料が含まれており、食事には多くのレシピが含まれています。

問題は:

SUM(ingredient_calories)FROMrecipe_has_ingredientsを選択することはできますが、meal_has_recipesテーブルを介してこれを行う方法を理解することはできません(食事の総カロリーを計算するため)。

どんな助けでも大歓迎です:)

4

1 に答える 1

1

ファクトテーブルの材料、食事、レシピの主キーを過度に制限しました。idフィールドをpkとして使用するだけです。

任意の名前フィールドに一意性制約を作成できます。

レシピには材料テーブルがあり、複合主キーとしてrecipe_idとcomponents_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 に答える