如何在SQL查询上将多个FK更改为自己的值/名称?



我在"任务"表中有一行包含"AssignTo"列和"AssignFrom"列。该列与"员工"表相关。在"员工"表中,我有"姓名"列。如何查询带有获取员工姓名的"任务"表?我知道连接,但每个表只引用一列。

编辑: "员工"表中的 PK 是 OID

可以多次执行联接:

SELECT t.*, e1.Name AS AssignFromTo, e2.Name AS AssignFromName
FROM Task t
JOIN Employee e1 
ON t.AssignTo = e1.EmployeeId
JOIN Employee e2
ON t.AssignFrom = e2.EmployeeId

您需要两个连接:

select t.*, ef.name as from_name, et.name as to_name
from task t left join
employee ef
on t.assignfrom = ef.name left join
employee et
on t.assignto = et.name;

这将使用left join因此,如果工作分配字段为空,则不会丢失任何行。

此外,还应使用员工 ID 而不是联接名称。 也许您应该重新访问您的数据模型。

最新更新