我正在嘗試爲減肥門診的客戶做一頓飯調度數據庫。這些都是一些食譜:如何在單獨的實體中將多個列從一個實體連接到單個列?
+-----------+-----------------------+
| recipe_ID | recipe_name |
+-----------+-----------------------+
| 1 | Healthy Burritos |
| 2 | Stuffed Peppers |
| 3 | Breakfast Pizza Slice |
+-----------+-----------------------+
這是一天一個計劃:
+--------+-----------+-------+--------+
| ddp_ID | breakfast | lunch | dinner |
+--------+-----------+-------+--------+
| 1 | 3 | 1 | 2 |
+--------+-----------+-------+--------+
在計劃在早餐,午餐和晚餐每個號碼爲外鍵指的是配方的ID。我想執行一個查詢,獲取每個配方的名稱以顯示給用戶。這是我得到了什麼,但我發現了以下錯誤,我似乎無法來解決:ERROR 1066(42000):不是唯一的表/別名:「daily_diet_plan」
SELECT
recipe.recipe_name
FROM
recipe
INNER JOIN daily_diet_plan ON (daily_diet_plan.breakfast = recipe.recipe_ID)
INNER JOIN daily_diet_plan ON (daily_diet_plan.lunch = recipe.recipe_ID)
INNER JOIN daily_diet_plan ON (daily_diet_plan.dinner = recipe.recipe_ID);
謝謝這麼多的任何幫助,你可以提供!對此,我真的非常感激。
編輯:這工程!
SELECT recipe.recipe_name
FROM recipe
LEFT JOIN daily_diet_plan as brkfast ON (brkfast.breakfast = recipe.recipe_ID)
LEFT JOIN daily_diet_plan as lunch ON (lunch.lunch = recipe.recipe_ID)
LEFT JOIN daily_diet_plan as dinner ON (dinner.dinner = recipe.recipe_ID) order by recipe.recipe_name;
你考慮你的正常化表,以避免三重加入 – dnoeth
[鏈接ERD(HTTP://i.imgur。 – balloon
將三餐正常化七天將導致:** weekly_diet_plan **(WDP_ID PK,其他列?)和 **每日日程安排**(WDP_ID FK參考文獻(WDP.WDP_ID), day_of_week byteint檢查(第(1,2,3,4,5,6,7)星期一至星期一(枚舉?)* /, meal_of_day byteint check(time_of_day in(1,2,3)/ *早餐/午餐/晚餐(枚舉?)* /, 配方FK參考(recipes.recipe_ID), PK(WPD_ID ,day_of_week,meal_of_day))您可以輕鬆添加*茶時間* – dnoeth