我有4张 table
Table incidences-employees
---------------------------
idIncidenceEmployee PK
idEmployee FK (employee.idemployee)
idMasterIncidence FK (incidence-master.idIncidence)
createdby FK (user-employee.idMongoUser)
authorizedBy FK (user-employee.idMongoUser)
Table incidence-master
---------------------------
idIncidence PK
name
TAble user-employee
--------------------------
idMongoUser PK
idEmployee
Table EMployee
-------------------------
idEmployee Pk
name
lastName
我执行此查询
SELECT employee.name, incidences-master.name, incidences-employees.*
FROM employee-incidences
INNER JOIN employee ON employee.idEmployee = employee-incidences.idEmployee
INNER JOIN incidences-master ON incidences-master.idIncidence = employee-incidences.idIncidenceEmployee
我明白了
Employee name | Incidence name | idIncidenceEmployee | idEmployee | idMasterIncidence | createdby | authorizedBy
John Doe | Incidence Name | 1 | 1 | 5 | abc123 | abc123
但是在创建并授权时,我得到一个 ID,abc123,我想要的是将 id 与名称相匹配,该 id 位于表 user-employee
Table user-employee Table Employee
---------------------- - -------------------
idMongoUser -> abc123 idEmployee -> 1
idemployee -> 1 Name -> John Doe
我希望显示 John Doe,而不是 ID。
最佳答案
你可能想要这样的东西:
SELECT employee.name as employeeName, incidences-master.name as incidenceName, e1.name as createdBy, e2.name as authorisedBy
FROM employee-incidences
INNER JOIN incidences-master ON incidences-master.idIncidence = employee-incidences.idIncidenceEmployee
INNER JOIN employee ON employee.idEmployee = employee-incidences.idEmployee
INNER JOIN user-employee ue1 on ue1.idMongoUser = employee-incidences.createdBy
INNER JOIN employee e1 on e1.idEmployee = ue1.idEmployee
INNER JOIN user-employee ue2 on ue2.idMongoUser = employee-incidences.AuthorizedBy
INNER JOIN employee e2 on e2.idEmployee = ue2.idEmployee
如果存在createdBy或authorizedBy可能为空或null的情况,那么我建议使用Left Joins而不是Inner Joins
关于mysql - 内连接多个表获取名称而不是 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39901910/