2016-03-02 118 views
1

我的數據庫中有兩個表:菜單和菜餚。 (我翻譯的列和數據庫名稱,不要打擾,如果沒有意義)MYSQL內部連接爲多行結果

菜單表

id  date_begins  date_ends  id_dishes_monday id_dishes_tuesday id_wednesday    
1  xxxxx    xxxxx    1     2    3 

菜表

id  date    dynamic_dishes 
1  2016/03/02    BLOB 
2  2016/03/03    BLOB 
3  2016/03/04    BLOB 


我想選擇的id_dishes_monday,id_dishes_tuesday,id_wednesday從菜單表中檢索菜單表中的多行。

我做了一個嘗試使用此查詢,但它只返回一行,我不知道爲什麼。

SELECT D.* FROM Menu M INNER JOIN Dishes D WHERE D.id IN (M.id_dishes_monday,M.id_dishes_tuesday,id_dishes_wednesday) ORDER BY M.id DESC LIMIT 1 


什麼這個查詢本例產地:

id  date    dynamic_dishes 
1  2016/03/02    BLOB 


我想要什麼:

 id  date    dynamic_dishes 
    1  2016/03/02    BLOB 
    2  2016/03/03    BLOB 
    3  2016/03/04    BLOB 



注意表中的數據都是隻爲例證, 我想知道爲什麼這個查詢不起作用以及查詢的正確性。

+0

「如果沒有意義不煩」 - 確定 – Strawberry

+0

我的意思不注意數據庫或列的名稱,只關注邏輯,即使它們對你沒有意義。 –

回答

2

因爲你限制你的輸出!

SELECT D.* 
FROM Menu M 
INNER JOIN Dishes D 
WHERE D.id IN (M.id_dishes_monday,M.id_dishes_tuesday,id_dishes_wednesday) 
ORDER BY M.id DESC 

我已經刪除了限制1在您的查詢,其結果限制在第一行的末尾

+0

就是這樣。我認爲限制器是用於Menu表格的,並沒有注意到這一點。謝謝 –

+0

沒問題.. :) – Yossi

+0

你的回答太快了,我必須等待將答案標記爲已接受。但我會 :) 。 –