首页 > 解决方案 > 是否可以将表连接到自身

问题描述

我有一个将两个表连接在一起的查询。在表 OI 中有一个员工 ID,我将其加入 HR 表以检索员工姓名:

inner join hr AS hr on o.syscreator = hr.res_id

HR 表上还有员工经理,但值只是经理的员工 ID。因此,要检索经理的全名,我需要使用自我加入吗?我只能找到使用 FROM 表的自连接示例,在本例中是连接表。

select o.ordernr,
       o.refer,
       o.orddat,
       o.afldat,
       o.magcode,
       o.user_id,
       o.status, 
       o.represent_id,
       o.crdnr,
       o.ord_debtor_name,
       o.ord_AddressLine1,
       ord_PostCode,
       ord_City,
       ord_StateCode,
       o.ord_landcode,
       o.ord_Phone,
       o.ord_contactperson, 
       o.ord_contactemail,
       o.syscreated,
       h.fullname AS RepName,
       h.repto_id AS ManagerID
from order o
inner join humres AS hr on o.syscreator = hr.res_id

任何帮助,将不胜感激。

标签: sqljoin

解决方案


您可以确保将同一张桌子带两次 - 您只需要使用不同的别名。

我认为你想要:

select 
    o.ordernr, 
    ..., 
    h.fullname AS RepName, 
    h.repto_id AS ManagerID,
    hr_mgr.fullname as MgrName
from order o 
inner join humres AS hr on o.syscreator = hr.res_id
inner join humres AS hr_mgr on hr_mgr.res_id = hr.repto_id

推荐阅读