【发布时间】:2017-09-18 18:11:04
【问题描述】:
我目前正在 MS SQL Server 2012 中处理复杂的 T-SQL 查询。我基本上检索项目的基本列表,其中包含 ProjectId 以及 StaffVersionId(员工可能在整个项目中发生变化,虽然我希望不会是这样 :P )。
CREATE TABLE #BasicProjects
(
ProjectId INT
, StaffVersionId INT
)
接下来我需要加入 ProjectData 表以获取项目的标题,并加入 Employee 表以获取员工的全名。
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 = 联系人。
当我运行我的查询时,我收到了这个错误:
在 FROM 子句中多次指定相关名称“E”。
你知道如何解决这个错误吗?或者关于如何改进这个查询的一些建议?
非常感谢!
【问题讨论】:
标签: sql-server tsql join