SQL Server:多次连接相同的列

Bob*_*iet 0 sql sql-server

我正在尝试从两个表中获取和连接来自SQL Server的信息.

假设我有这两个表:

表Resources:

ID    Resource
---------------
1     Alex
2     Dennis
3     Diane
Run Code Online (Sandbox Code Playgroud)

表Projects:

Project      Manager    Leader    Engineer
------------------------------------------
pro_18001    1          2         3
Run Code Online (Sandbox Code Playgroud)

我想得到以下结果:

Project        Manager    Leader    Engineer
---------------------------------------------
pro_18001      Alex       Dennis    Diane
Run Code Online (Sandbox Code Playgroud)

我想SQL查询应该类似于:

SELECT
  [Projects].[Project]
  [Resources].[Resource]
  [Resources].[Resource]
  [Resources].[Resource]
FROM
  [Projects]
LEFT JOIN
  [Resources] ON
    [Projects].[Manager] = [Resources].[ID] AND
    [Projects].[Leader] = [Resources].[ID] AND
    [Projects].[Engineer] = [Resources].[ID]
WHERE
  [Project].[Projects] = 'pro_18001'
Run Code Online (Sandbox Code Playgroud)

但我确定下面的部分是不正确的,因为有3倍相同的列,并且连接可能不会按正确的顺序选择正确的列...

SELECT
  [Projects].[Project]
  [Resources].[Resource]
  [Resources].[Resource]
  [Resources].[Resource]
Run Code Online (Sandbox Code Playgroud)

那么如何在正确的位置多次加入同一列?

bat*_*at7 7

您需要为每列添加左连接3而不是1:

SELECT
  [Projects].[Project],
  Manager.[Resource] AS Manager,
  Leader.[Resource] AS Leader,
  Engineer.[Resource] AS Engineer
FROM [Projects]
LEFT JOIN [Resources] Manager
       ON [Projects].[Manager] = Manager.[ID]
LEFT JOIN  [Resources] Leader
       ON [Projects].[Leader] = Leader.[ID]
LEFT JOIN [Resources] Engineer
       ON [Projects].[Engineer] = Engineer.[ID]
WHERE [Project].[Projects] = 'pro_18001'
Run Code Online (Sandbox Code Playgroud)