首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实施3个表连接

实施3个表连接
EN

Stack Overflow用户
提问于 2016-10-13 15:17:39
回答 1查看 27关注 0票数 0

我有三张桌子

代码语言:javascript
复制
employees     
-------------   
|idEmployee |  
|   name    |  

user-employee   
----------------                           
|  idUser      |-> MongoID      
|  idEmployee  |-> FK employees.idEmployee    

employees-supervisor
--------------------
|    idEmployee    |-> FK employees.idEmployee          
|    idUser        |-> FK user-employee.idUser    

我想要下一张桌子

代码语言:javascript
复制
idEmployee | name   | idUser | nameSupervisor
    1      | John   |     A2 |     Jane

Employee表包含公司的所有员工,user-employee包含系统用户的所有员工,user-employee.idUser是mongo文档的用户,employees-supervisor包含一个列表,该列表将idUser (mongoid)与员工的id (mysql)进行匹配。

我想要的是显示所有员工及其各自的主管(如果有的话),现在我得到了idUser

代码语言:javascript
复制
SELECT employees.*, e1.idUser as idSupervisor, e2.name as supervisor
  FROM employees
  left JOIN user-employee e1 ON  e1.idEmployee = employees.idEmployee 

这显示了

代码语言:javascript
复制
idEmployee | name   |  idUser | 
    1      | John   |  5887Ab | 

我已经有了主管的id,现在如何将该Id与user-employee表中的名称进行匹配?

EN

回答 1

Stack Overflow用户

发布于 2016-10-13 15:35:17

如果键不匹配,用户可以使用左连接

代码语言:javascript
复制
SELECT employees.*, e1.idUser as idSupervisor, e3.name as supervisor
FROM employees
left JOIN `user-employee` e1 ON  e1.idEmployee = employees.idEmployee 
left JOIN `employees-supervisor` e2 on on e2.idUser = e.idUser
left JOIN  employees e3 on e2.idEmployee = e3.idEmployee;

但是,如果表之间的键匹配,则应使用内连接

代码语言:javascript
复制
SELECT employees.*, e1.idUser as idSupervisor, e3.name as supervisor
FROM employees
INNER JOIN `user-employee` e1 ON  e1.idEmployee = employees.idEmployee 
INNER JOIN `employees-supervisor` e2 on on e2.idUser = e.idUser
INNER JOIN  employees e3 on e2.idEmployee = e3.idEmployee;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40014616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档