簡體   English   中英

來自3個表的SQL連接信息

[英]SQL Joining Information From 3 Tables

我知道其他地方也回答了與我類似的問題,但對於我的情況,我似乎無法弄清楚。

我有2個表,一個[Request]表用於存儲請求,一個[Log]表用於存儲對請求執行的狀態更改。 我正在開發一個報表應用程序,該應用程序當前使用兩個表的RequestID上的INNER JOIN返回有關每個請求的狀態更改的信息。 看起來像這樣:

SELECT 
    [Log].[Column1], [Request].[Column2], [Request].[Column3] 
FROM 
    [Log] 
INNER JOIN 
    [Request] ON [Log].[RequestID] = [Request].[ID]

這是我的問題:已要求我擴展報告以包括請求的操作。 我會解釋。 每個請求都有與之關聯的類型。 如果類型為SMP ,則需要從第三個[SMP_Request]表中包含Action ,並將其作為報告中的一列。 如果類型不是SMP ,那么該列將保留為空白。 我確信注意[SMP_Request]表還具有一個RequestID字段,我們可以使用它來匹配所有內容,這一點也很重要。

我試圖從[SMP_Request]表中找出如何包含該Action列的查詢的[SMP_Request]但我正在努力使其正確。 任何幫助,將不勝感激。 謝謝!

使用左聯接。

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]

這將為您提供對請求的任何操作,如果沒有,則將返回一個空白

在這里查看更多信息

我認為這就是您要尋找的。

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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM