我正在尝试从两个表中获取和连接来自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)
那么如何在正确的位置多次加入同一列?
您需要为每列添加左连接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)
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |