[英]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.