2012-01-28 99 views
0

是否可以選擇多個表並在其中一個表上進行內部連接?例如Mysql選擇多個表,但內部連接在一個表上

SELECT * 
FROM table1 AS t1, table2 AS t2, table3 AS t3 
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3 
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4 
WHERE ... 

這個特殊情況正在導致我的問題。它給了我一個錯誤 - 'on子句'中的未知列「t1.row3」。我不知道是否可以選擇多個表,但在其中一個表上進行內部連接。

+0

這些是您的實際表和列名嗎? – klennepette 2012-01-28 12:44:01

+0

不,這些不是我的實際表和列名稱,但它是相似的。我需要選擇3個表格,在一張桌子上我需要做內部連接,而在另外兩張桌子上只需簡單選擇。 – woopata 2012-01-28 16:41:29

回答

5

JOIN操作數比逗號,操作更高的優先級,因此連接是有效地視爲

t1, t2, (t3, t4, t5 ON ...) 

各地T1,T2,T3認沽括號。

SELECT * 
FROM (table1 AS t1, table2 AS t2, table3 AS t3) 
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3 
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4 
WHERE ... 

你也可以寫你的查詢爲:

SELECT * 
FROM table1 AS t1 
INNER JOIN table2 AS t2 
INNER JOIN table3 AS t3 
INNER JOIN table4 AS t4 ON t1.row3 = t4.row3 
INNER JOIN table5 AS t5 ON t1.row4 = t5.row4 
WHERE ... 

因爲逗號等價於INNER JOIN沒有連接條件。

+0

謝謝,它的工作:) – woopata 2012-01-28 14:34:35

+0

實際上我沒有看到現在作爲結果我得到同一行多次... row1,row1,row1,row2,row2,row2 .... – woopata 2012-01-28 16:40:02