2016-05-02 41 views
0

我正在嘗試爲減肥門診的客戶做一頓飯調度數據庫。這些都是一些食譜:如何在單獨的實體中將多個列從一個實體連接到單個列?

+-----------+-----------------------+ 
| 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; 
+1

你考慮你的正常化表,以避免三重加入 – dnoeth

+0

[鏈接ERD(HTTP://i.imgur。 – balloon

+1

將三餐正常化七天將導致:** 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

回答

1

更新查詢(我已經加入DIFF別名:

SELECT 
recipe.recipe_name 
FROM 
recipe 
INNER JOIN daily_diet_plan as brkfast ON (brkfast.breakfast = recipe.recipe_ID) 
INNER JOIN daily_diet_plan as lunch ON (lunch.lunch = recipe.recipe_ID) 
INNER JOIN daily_diet_plan as dinner ON (dinner.dinner = recipe.recipe_ID); 
+0

雖然這沒有錯誤,但它會返回一個空集。你知道這可能是爲什麼嗎? – balloon

+1

而不是內部連接使用左連接 –

+0

非常感謝,這工作!你是炸彈! – balloon

相關問題