我有三张桌子
EmployeeConfig
包含:
ID CompanyId FieldName Label
---------------------------------------
9 1 DEPARTMENT DEPARTMENT
10 1 PTLOCATION Prof.Tax Location
11 1 DESIGNATION Designation
Combovalues
包含:
ID CompanyId FieldName ComboValue
--------------------------------------------
11 1 DEPARTMENT Management
12 1 DEPARTMENT Outsource
13 1 DEPARTMENT Trims
14 1 DEPARTMENT Logistics
55 1 DESIGNATION Deputy Executive Director
56 1 DESIGNATION Manager
57 1 DESIGNATION Sr Manager - Trims
58 1 DESIGNATION Manager - Exports
59 1 DESIGNATION Planning Manager
EmployeeDetail
包含:
ID CompanyId Code Name Category Department Designation
-------------------------------------------------------------
1 1 AI001 ABC 1 11 55
2 1 S 003 MNO 1 12 56
3 1 S 022 PQR 1 13 57
4 1 S 030 XYZ 1 14 58
EmployeeConfig
包含所有动态列ComboValues
包含基于EmployeeConfig
表EmployeeDetail
包含ComboValues
table EmployeeDetail
包含基于EmployeeConfig
的动态列。我想在ComboValues
表中用EmployeeDetail
替换动态列值。
我尝试了这个查询:
SELECT
E.Id, E.NAME,
C.ComboValue AS Designation,
Cdep.ComboValue AS department
FROM
[Aquara7bc772839].EmployeeDetail AS E
FULL JOIN
ComboValues C ON E.Designation = C.Id
FULL JOIN
ComboValues Cdep ON E.Department = Cdep.Id
INNER JOIN
EmployeeConfig Ex ON E.CompanyId = Ex.CompanyId
WHERE
E.CompanyId = 1
但是上面的查询没有返回下面的预期输出:
ID CompanyId Code Name Category Department Designation
-------------------------------------------------------------------------
1 1 AI001 ABC 1 Management Deputy Executive Director
2 1 S 003 MNO 1 Outsource Manager
3 1 S 022 PQR 1 Trims Sr Manager - Trims
4 1 S 030 XYZ 1 Logistics Manager - Exports
答案 0 :(得分:5)
你可以像这样进行双重连接:
select e.id,
e.companyid,
e.code,
e.name,
e.category,
c1.combovalue department,
c2.combovalue designation
from EmployeeDetail e
left join Combovalues c1
on e.department = c1.id
and c1.fieldname = 'DEPARTMENT'
left join Combovalues c2
on e.designation = c2.id
and c2.fieldname = 'DESIGNATION';
您可以根据您拥有的其他关系(例如公司ID等)包含其他加入条款。