2017-07-28 62 views
0

我有這樣的一個表:MySQL的左連接不止一次

數據:

id | state | more 
----------------- 
1 | 1  | ... 
2 | 2  | ... 
3 | 1  | ... 

,並指出:

id | state 
---------- 
1 | Open 
2 | Closed 

如果我做

SELECT states.state FROM data LEFT JOIN states ON data.state = states.id 

我收到

state 
----- 
Open 
Closed 
Open 

到目前爲止這麼好。我所試圖做的(沒有成功),如果我有這樣的一個表中的數據:

id | state | state2 | more 
-------------------------- 
1 | 1  | 2  | ... 
2 | 2  | 1  | ... 
3 | 1  | 1  | ... 

如何獲得:

state | state 2 
---------------- 
Open | Closed 
Closed | Open 
Open | Open 
+0

什麼是「更多」? – Strawberry

回答

1
SELECT states.state, states2.state 
FROM data 
LEFT JOIN states as states ON data.state = states.id 
LEFT JOIN states as states2 ON data.state2 = states2.id 
+0

表國家2不'噸存在 – Blaztix

+0

這不是工作,因爲狀態2是沒有桌子 – PhilHarmonie

+0

@PhilHarmonie現在就來試試 –

0

您需要做的另一個左連接

SELECT 
    s1.state AS state1, 
    s2.state AS state2 
FROM data d 
LEFT JOIN states s1 ON d.state = s1.id 
LEFT JOIN states s2 ON d.state2 = s2.id 
+0

這不是工作,因爲狀態2沒有表 – PhilHarmonie

+0

表國家2不'噸存在 – Blaztix

+0

@PhilHarmonie編輯 –

1

只是用另一LEFT JOINalias

SELECT 
    s1.state AS state1 
    s2.state AS state2 
FROM data d 
LEFT JOIN states s1 ON d.state = s1.id 
LEFT JOIN states s2 ON d.state2 = s2.id 
+0

這不是工作,但我還是會得到「你的SQL語法錯誤......」。我已經添加了缺少的 – PhilHarmonie

+0

對不起,我忘了設置d.state(2)到d.state2 – Blaztix