加入不同的尺寸

时间:2017-06-30 17:24:09

标签: mysql left-join rows

我有一张工作台,另一张办公室。一名工人可以在不同的办公室或任何办公室。

表格如下:

**Workers**  
ID |  Name
1  |  Ned 
2  |  James
3  |  Tyrion

**WorkersOffices**  
WorkerID |  OfficeID
    1     |    18
    1     |    17 
    2     |    18

我想加入这两个表来得到这样的东西:

**Joined**  
ID |  Name   |  OfficeID
 1  |  Ned    |     18
 1  |  Ned    |     17
 2  |  James  |     18
 3  |  Tyrion |

我已尝试过以下内容,但它只为工人加入一个办公室。

SELECT * FROM workers w
LEFT JOIN workersoffice wo on w.id = wo.workerid 

如何获得此结果?

3 个答案:

答案 0 :(得分:0)

您必须使用LEFT JOIN

SELECT * FROM workers w
LEFT JOIN workers_office wo on w.id = wo.worker_id 

如果该工作人员存在,那么它基本上会占用workers表和加入办公室的所有行。

与问题无关的另一件事是使用表格的单数名称,您可以在此SO answer

中阅读更多相关信息。

答案 1 :(得分:0)

这就是你需要的:

select w.id,w.name,wo.office_id from workers w left join WorkerOffices wo on w.id = wo.worker_id;

结果集:

+------+--------+-----------+
| id   | name   | office_id |
+------+--------+-----------+
|    1 | Ned    |        18 |
|    1 | Ned    |        17 |
|    2 | James  |        18 |
|    3 | Tyrion |      NULL |
+------+--------+-----------+

答案 2 :(得分:0)

@Uri您在加入后的查询只使用“按工作人员分组或命名”。

这肯定会帮助你。你的加入是正确的。那么你就可以得到没有工人位置的鸡蛋。