我知道类似于我的问题已在其他地方得到解答,但我似乎无法解决这个问题。
我有2个表,一个[Request]
表用于存储请求,一个[Log]
表用于存储对请求执行的状态更改。我正在处理一个报告应用,该应用当前使用两个表中INNER JOIN
的{{1}}返回有关每个请求的状态更改的信息。看起来像这样:
RequestID
以下是我的问题:我已被要求扩展报告以包含请求的操作。我会解释一下。每个请求都有一个与之关联的类型。如果类型为SELECT
[Log].[Column1], [Request].[Column2], [Request].[Column3]
FROM
[Log]
INNER JOIN
[Request] ON [Log].[RequestID] = [Request].[ID]
,我需要在第三个SMP
表中添加Action
,并将其作为报告中的列添加。如果类型不是[SMP_Request]
,则该列只是留空。我确定同样重要的是要注意SMP
表还有一个[SMP_Request]
字段,我们可以用它来匹配所有内容。
我试图找出如何制作我的查询以包含RequestID
表格中的Action
列,但我正在努力使其正确。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:3)
使用左连接。
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]
如果对请求有任何操作,这将为您提供,如果不是,将返回空格
答案 1 :(得分:0)
我认为这是你正在寻找的。 p>
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')