我需要创建一个查询来自两个表的数据的视图:
表#1为Project
(包含列ProjectID
,Resource1
,Resource2
,Resource3
,Resource4
等。)
表#2为ResourceTable
(包含列ResourceID
,AccountNO
等。)
我需要根据AcccountNo
查询ProjectID
四种资源。
像
ProjectID, AccountNO for Resource1, AccountNO for Resource2, AccountNO for Resource3, AccountNO for Resource4
为此,我创建了以下查询 - 但它只返回一个资源的数据:
SELECT
[ProjectID], [AccountNO]
FROM
[dbo].[Project]
INNER JOIN
[dbo].[ResourceTable] ON [ProjectID].[ResourceID1] = [dbo].[ResourceTable].[AccountNO ]
输出:
ProjectID AccountNoforResource1
----------------------------------
08SMA0001 NULL
10DL0051 29608529
10DL0052 NULL
10DL0053 NULL
10DL0055 29608233
10DL0058 29608233
11DL0011 NULL
11DL0013 29608233
但我需要所有资源帐号..
请帮我解决这个问题..
谢谢..
答案 0 :(得分:0)
由于您键入了两次,我会假设[AccountNO ]
(带空格)是实际的列名,如果有的话,这有点奇怪,但还行!
尝试以下查询。另请注意我如何Drupal\Core\Menu\LocalTaskManager->getDefinitions()
使用as
关键字:p
,r1
,r2
等表格。aliased。 as
关键字完全是可选的(我通常会将其删除但为了清晰起见而添加它):
select [ProjectID],
r1.[AccountNO ] as [AccountNO_1],
r2.[AccountNO ] as [AccountNO_2],
r3.[AccountNO ] as [AccountNO_3],
r4.[AccountNO ] as [AccountNO_4],
from [dbo].[Project] as p
left join [dbo].[ResourceTable] as r1 on p.[ResourceID1] = r1.[ResourceID]
left join [dbo].[ResourceTable] as r2 on p.[ResourceID2] = r2.[ResourceID]
left join [dbo].[ResourceTable] as r3 on p.[ResourceID3] = r3.[ResourceID]
left join [dbo].[ResourceTable] as r4 on p.[ResourceID4] = r4.[ResourceID]