Tsql SQL连接查询,获取ManagerName
我有一个员工档案和一个员工档案。tblPersonnel是一个HR表,由公司的所有员工组成;tblEmployeeProfile包含有关员工职位的详细信息Tsql SQL连接查询,获取ManagerName,tsql,Tsql,我有一个员工档案和一个员工档案。tblPersonnel是一个HR表,由公司的所有员工组成;tblEmployeeProfile包含有关员工职位的详细信息 tblPersonnel.PersonnelID tblPersonnel.FirstName tblPersonnel.MiddleName tblPersonnel.LastName tblPersonnel.PhoneNumber tblPersonnel.Email tblEmployeeProfile.EmployeeID tbl
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时,他/她将不见踪影)
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