SQL 加入来自 3 个表的信息
SQL Joining Information From 3 Tables
我知道其他地方已经回答了与我类似的问题,但我似乎无法为我的场景解决这个问题。
我有 2 个 table,一个 [Request]
table 用于存储请求,一个 [Log]
table 用于存储在要求。我正在开发一个报告应用程序,目前 returns 关于每个请求的状态更改的信息使用 table 的 RequestID
上的 INNER JOIN
。看起来像这样:
SELECT
[Log].[Column1], [Request].[Column2], [Request].[Column3]
FROM
[Log]
INNER JOIN
[Request] ON [Log].[RequestID] = [Request].[ID]
这是我的问题:我被要求扩展报告以包括请求的操作。我会解释。每个请求都有一个与之关联的类型。如果类型是 SMP
,我需要包括来自第三个 [SMP_Request]
table 的 Action
,并将其作为我报告中的一列。如果类型不是 SMP
,则该列留空。我确定同样重要的是要注意 [SMP_Request]
table 也有一个 RequestID
字段,我们可以使用它来匹配所有内容。
我正在尝试弄清楚如何设计我的查询以包含 [SMP_Request]
table 中的这个 Action
列,但我正在努力做到正确。任何帮助,将不胜感激。谢谢!
我想这就是您要找的。
SELECT [Log].[Column1], [Request].[Column2], [Request].[Column3], smp.Action
FROM [Log]
INNER JOIN [Request] ON [Log].[RequestID] = [Request].[ID]
LEFT OUTER JOIN SMP_Request smp ON (Request.ID = smp.RequestID AND smp.type == 'the type you care about')
使用左连接。
SELECT [Log].[Column1], [Request].[Column2], [Request].[Column3] , IsNull([SMP_Request].[Action], '') as Action
FROM [Log]
INNER JOIN [Request] ON [Log].[RequestID] = [Request].[ID]
LEFT JOIN [SMP_Request] ON [SMP_Request].[RequestID] = [Request].[ID]
如果对请求有任何操作,这会给你,如果没有,将 return 一个空白 Space
我知道其他地方已经回答了与我类似的问题,但我似乎无法为我的场景解决这个问题。
我有 2 个 table,一个 [Request]
table 用于存储请求,一个 [Log]
table 用于存储在要求。我正在开发一个报告应用程序,目前 returns 关于每个请求的状态更改的信息使用 table 的 RequestID
上的 INNER JOIN
。看起来像这样:
SELECT
[Log].[Column1], [Request].[Column2], [Request].[Column3]
FROM
[Log]
INNER JOIN
[Request] ON [Log].[RequestID] = [Request].[ID]
这是我的问题:我被要求扩展报告以包括请求的操作。我会解释。每个请求都有一个与之关联的类型。如果类型是 SMP
,我需要包括来自第三个 [SMP_Request]
table 的 Action
,并将其作为我报告中的一列。如果类型不是 SMP
,则该列留空。我确定同样重要的是要注意 [SMP_Request]
table 也有一个 RequestID
字段,我们可以使用它来匹配所有内容。
我正在尝试弄清楚如何设计我的查询以包含 [SMP_Request]
table 中的这个 Action
列,但我正在努力做到正确。任何帮助,将不胜感激。谢谢!
我想这就是您要找的。
SELECT [Log].[Column1], [Request].[Column2], [Request].[Column3], smp.Action
FROM [Log]
INNER JOIN [Request] ON [Log].[RequestID] = [Request].[ID]
LEFT OUTER JOIN SMP_Request smp ON (Request.ID = smp.RequestID AND smp.type == 'the type you care about')
使用左连接。
SELECT [Log].[Column1], [Request].[Column2], [Request].[Column3] , IsNull([SMP_Request].[Action], '') as Action
FROM [Log]
INNER JOIN [Request] ON [Log].[RequestID] = [Request].[ID]
LEFT JOIN [SMP_Request] ON [SMP_Request].[RequestID] = [Request].[ID]
如果对请求有任何操作,这会给你,如果没有,将 return 一个空白 Space