2017-07-28 63 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