2014-10-10 79 views
0

我很不安很抱歉,但我需要你的專業人士幫助不大...的MySQL從依賴於其它表的表中選擇值

我有兩個表:

Table1: 
ID, date, menu1, menu2, menu3, menu4 

Table2: 
ID, name, somethingElse, somethingElse2 

Table1(menu1,menu2,menu3,menu4)是Table2的ID。我需要的是向數據庫查詢「日期」值,並從Table2中獲取四行(取決於Table1的menuX值)有什麼建議嗎?

回答

1

閱讀MySQL文檔並查看有關JOINing的MySQL教程。在那裏,你會發現這樣的事情:

做一個簡單的SELECT五香了一個JOIN並告訴MySQL使用ID作爲加入-科拉姆:

SELECT Table1.`date` FROM Table1 
JOIN Table2 ON Table1.ID = Table2.ID 
WHERE Table1.menu1 = "someValue" 
AND Table1.menu2 = "someOtherValue" 

如果運行了一下嘗試添加上INDEX慢表ID-COL之一:

ALTER TABLE Table1 ADD INDEX myIndex (ID) 

您可以檢查多少行通過聲明

0123進行檢查
+0

Table1.ID = Table2.ID沒有連接! Table1.menu1 = Table2.ID,Table1.menu2 = Table2.ID,Table1.menu3 = Table2.ID,Table1.menu4 = Table2.ID,這是我所需要的,通過查詢Table1中的日期從Table2中獲取四行 – SilentCry 2014-10-10 16:36:14

+0

那又如何?只需在上面查詢的'ON'部分使用這些條件即可。通過'AND'連接它們... – Benvorth 2014-10-10 16:38:54

+0

但是在你的例子中沒有添加「WHERE'date' = '14 -10-10'的地方」「我需要類似SELECT * FROM Table2 WHERE Table2.ID = – SilentCry 2014-10-10 19:03:49

0

好吧,現在我明白你的問題了。感謝您提供的示例,這是一個可以解決您的問題的查詢。這裏的技巧是使用UNION將一個查詢結果追加到另一個查詢結果下。這樣做四次將這樣的伎倆:

SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu1 = b.ID WHERE a.`date` = '2014-10-08' 
UNION 
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu2 = b.ID WHERE a.`date` = '2014-10-08' 
UNION 
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu3 = b.ID WHERE a.`date` = '2014-10-08' 
UNION 
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu4 = b.ID WHERE a.`date` = '2014-10-08' 

你的菜單聽起來很美味:-)

+0

也許聽起來,但它不是:-D它是從工廠的廚房菜單,這個項目是這裏只是爲了向總部報告,情況有多糟糕: - D - >就業評級食品:-) – SilentCry 2014-10-11 10:17:43

+0

rofl - 祝你好運! – Benvorth 2014-10-11 10:20:20

相關問題