2011-08-01 47 views
0
SELECT table1.name, table2.wage, table2.bonus table3.shift, table3.endtime, table4.vacation 
FROM table1 
INNER JOIN table2 ON table1.userid = table2.userid 
INNER JOIN table3 ON table2.userid = table3.userid 
INNER JOIN table3 ON table2.endtime = table3.endtime 
INNER JOIN table4 ON table4.userid = table4.userid 
LEFT JOIN table5 ON table1.name = table5.position 

,這將引發錯誤:Not unique table/alias: 'table3'如何在MySql中爲兩個JOIN創建相同的表名?

我試圖

INNER JOIN table3 tbl3 ON table2.userid = table3.userid 
    INNER JOIN tbl3 ON table2.endtime = tbl3.endtime 

門檻不工作

回答

2

給它一個唯一的別名:

SELECT table1.name, table2.wage, table2.bonus t3a.shift, t3b.endtime, table4.vacation 
FROM table1 
INNER JOIN table2 ON table1.userid = table2.userid 
INNER JOIN table3 t3a ON table2.userid = t3a.userid 
INNER JOIN table3 t3b ON table2.endtime = t3b.endtime 
INNER JOIN table4 ON table4.userid = table4.userid 
LEFT JOIN table5 ON table1.name = table5.position; 

事實上,它使整潔代碼給予有史以來Ÿ表的別名:

SELECT 
    t1.name, 
    t2.wage, 
    t2.bonus, 
    t3a.shift, 
    t3b.endtime, 
    t4.vacation 
FROM table1 t1 
INNER JOIN table2 t2 ON t1.userid = t2.userid 
INNER JOIN table3 t3a ON t2.userid = t3a.userid 
INNER JOIN table3 t3b ON t2.endtime = t3b.endtime 
INNER JOIN table4 t4 ON t4.userid = t1.userid 
LEFT JOIN table5 t5 ON t1.name = t5.position; 

它看起來你有一個錯誤你加入了表4,並在選擇缺少逗號 - 我已經在這個最後的版本糾正它。

0

嘗試走樣表名:

SELECT * 
FROM Table1 t1 
JOIN Table1 t2 
ON t1.X = t2.Y 
0

使用別名與關鍵字AS(其可被省略)。

INNER JOIN table3 AS t31 ON table2.userid = t31.userid 
INNER JOIN table3 AS t32 ON table2.endtime = t32.endtime 
相關問題