从两个表中获取所需列的数据

时间:2017-10-13 04:52:11

标签: sql

我需要创建一个查询来自两个表的数据的视图:

  • 表#1为Project(包含列ProjectIDResource1Resource2Resource3Resource4等。)

  • 表#2为ResourceTable(包含列ResourceIDAccountNO等。)

我需要根据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

但我需要所有资源帐号..

请帮我解决这个问题..

谢谢..

1 个答案:

答案 0 :(得分:0)

由于您键入了两次,我会假设[AccountNO ](带空格)是实际的列名,如果有的话,这有点奇怪,但还行!

尝试以下查询。另请注意我如何Drupal\Core\Menu\LocalTaskManager->getDefinitions()使用as关键字:pr1r2等表格。aliasedas关键字完全是可选的(我通常会将其删除但为了清晰起见而添加它):

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]