Tsql SQL连接查询,获取ManagerName

Tsql SQL连接查询,获取ManagerName,tsql,Tsql,我有一个员工档案和一个员工档案。tblPersonnel是一个HR表,由公司的所有员工组成;tblEmployeeProfile包含有关员工职位的详细信息 tblPersonnel.PersonnelID tblPersonnel.FirstName tblPersonnel.MiddleName tblPersonnel.LastName tblPersonnel.PhoneNumber tblPersonnel.Email tblEmployeeProfile.EmployeeID tbl

我有一个员工档案和一个员工档案。tblPersonnel是一个HR表,由公司的所有员工组成;tblEmployeeProfile包含有关员工职位的详细信息

tblPersonnel.PersonnelID
tblPersonnel.FirstName
tblPersonnel.MiddleName
tblPersonnel.LastName
tblPersonnel.PhoneNumber
tblPersonnel.Email

tblEmployeeProfile.EmployeeID
tblEmployeeProfile.ManagerID
tblEmployeeProfile.DepartmentID
tblEmployeeProfile.JobCategoryID
tblEmployeeProfile.SalaryID
我想返回包含以下字段的记录:

EmployeeID, FirstName, MiddleName, LastName, Email, ManagerFullName

where EmployeeID = @EmployeeID

*tblEmployeeProfile.ManagerID = tblPersonnel.PersonnelID*

我似乎无法获得正确的查询以获取ManagerFullName

您可能需要尝试以下操作:

SELECT 
    e1.EmployeeID,
    e1.FirstName,
    e1.MiddleName,
    e1.LastName,
    e1.Email,
    e2.FirstName + ' ' + e2.LastName AS ManagerFullName
FROM
    tblPersonnel e1
INNER JOIN
    tblEmployeeProfile ep ON (ep.EmployeeID = e1.PersonnelID)
INNER JOIN
    tblPersonnel e2 ON (e2.PersonnelID = ep.ManagerID)
WHERE 
    e1.EmployeeID = @EmployeeID
试试这个:

SELECT
   p1.PersonnelID,
   p1.FirstName,
   p1.MiddleName,
   p1.LastName,
   p1.Email,
   p2.FirstName + ' ' + p2.MiddleName + ' ' + p2.LastName as ManagerFullName
FROM
   tblEmployeeProfile e,
   tblPersonnel p1,
   tblPersonnel p2
WHERE
   e.EmployeeId = p1.PersonnelId AND
   e.ManagerId = p2.PersonnelId AND
   e.EmployeeId = @EmployeeId
当然,假设:

  • tblPersonnel.PersonnelID=tblEmployeeProfile.EmployeeID
  • 每个人都有一个经理(这意味着当你提到CEO时,他/她将不见踪影)

不确定Tsql是否相同,但需要两个join语句。第一次联接是员工档案表与人员表的联接。第二种方法是将Personal表连接到profile表,以获取经理姓名。可能看起来像这样

FROM personnel p
JOIN employeeprofile prof
ON prof.employeeID = p.personnelID
LEFT OUTER JOIN personnel man
ON man.personnelID = prof.managerID

我在管理器上执行左外部联接的唯一原因是,在一个奇怪的事件中,用户可能没有分配管理器。

您正在尝试这样做吗

Select
    EmployeeID
    ,empTable.FirstName
    ,empTable.MiddleName
    ,empTable.LastName
    ,empTable.Email
    ,mgrTable.FirstName + ' ' 
   + mgrTable.MiddleName + ' '
   + mgrTable.LastName
      as ManagerFullName
from
    tblEmployeeProfile
    inner join
    tblPersonnel as empTable
        on tblEmployeeProfile.EmployeeID = empTable.PersonnelID
    inner join
    tblPersonnel as mgrTable
        on tblEmployeeProfile.ManagerID = mgrTable.PersonnelID
where EmployeeID = @EmployeeID

这两个表中似乎都没有“ManagerFullName”列。这可能是你的问题吗?好像你在和我一起做这个项目。左侧外部连接(用户没有管理器)是一个关键部分。谢谢你,卡尔。
FROM personnel p
JOIN employeeprofile prof
ON prof.employeeID = p.personnelID
LEFT OUTER JOIN personnel man
ON man.personnelID = prof.managerID
Select
    EmployeeID
    ,empTable.FirstName
    ,empTable.MiddleName
    ,empTable.LastName
    ,empTable.Email
    ,mgrTable.FirstName + ' ' 
   + mgrTable.MiddleName + ' '
   + mgrTable.LastName
      as ManagerFullName
from
    tblEmployeeProfile
    inner join
    tblPersonnel as empTable
        on tblEmployeeProfile.EmployeeID = empTable.PersonnelID
    inner join
    tblPersonnel as mgrTable
        on tblEmployeeProfile.ManagerID = mgrTable.PersonnelID
where EmployeeID = @EmployeeID