2
我目前正在处理MS SQL Server 2012中的一个复杂的T-SQL查询。我基本上检索了一个基本的项目列表,其中包含ProjectId以及StaffVersionId(这是可能的工作人员在整个项目中都会改变,但我希望情况不会如此:P)。T-SQL Multiple Join on 1表
CREATE TABLE #BasicProjects
(
ProjectId INT
, StaffVersionId INT
)
接下来,我需要加入对ProjectData的表来获得该项目的名称,以及加入的员工表,以获得员工的全名。
SELECT [P].ProjectId
, [PD].Label AS Title
, [E].Lastname + '' '' + Firstname AS Manager
, [E].Lastname + '' '' + Firstname AS Contact
FROM #BasicProjects [P]
INNER JOIN [MySchema].[ProjectData] [PD] ON [PD].ProjectDataId = [P].ProjectDataId
INNER JOIN [MySchema].[Staff] [Y] ON [Y].StaffVersionId = [P].StaffVersionId AND [Y].StaffTypeId = 3 // Manager
INNER JOIN [MySchema].[Staff] [X] ON [X].StaffVersionId = [P].StaffVersionId AND [X].StaffTypeId = 2 // Contact
INNER JOIN [dbo].[Employee] [E] ON [E].EmployeeId = [Y].EmployeeId
INNER JOIN [dbo].[Employee] [E] ON [E].EmployeeId = [X].EmployeeId
该查询有点难,因为我有2种员工雇员3 =经理,2 =联系。
当我运行我的查询,我得到这个错误:
在相关名“E”多次指定FROM子句。
你知道如何解决这个错误吗?或者,也许建议如何改善此查询?
非常感谢!
哈,不错!确实是这样!非常感谢,祝你周末愉快! – TimHorton
@TimHorton乐意帮忙! – SqlZim