所以基本上我現在遇到的問題是我無法解決如何在SQL Server中執行高級JOIN查詢。先進的SQL查詢鬥爭
我有以下表格:
- 事件
- 後果
- incident_consequence(加入)
- 嚴重性
我的查詢需要從數據庫中提取每個事件記錄和通過與事件相關的後果來確定其嚴重性(在加入中)表incident_consequence)。每個結果記錄都有一個與其關聯的嚴重性外鍵。一旦我發生與事件相關的所有後果,我只需要返回嚴重程度最高的整數值。
因此,您可能會在此處看到,我需要將incident_consequences.incident_id加入到incidents.id表中以獲取所有關係,並從那裏將incident_consequence.consequence_id加入impact.id,然後將嚴重性加入results.severity等等等等。
我在做這件事時遇到了很多麻煩,希望一個聰明的人能夠很好地瞭解SQL,能夠幫助我解決這個問題。
這是我到目前爲止有:
SELECT DISTINCT dbo.incidents.id, MAX(severities1.[level]) AS severities
FROM dbo.incidents
INNER JOIN dbo.incident_consequence
ON dbo.incidents.id = dbo.incident_consequence.incident_id
INNER JOIN dbo.consequences
ON dbo.incident_consequence.consequence_id = dbo.consequences.id
INNER JOIN dbo.severities AS severities1
ON dbo.consequences.severity = severities1.id
LEFT OUTER JOIN dbo.severities AS severities2
ON severities1.id = severities2.id AND severities1.[level] < severities2.[level]
WHERE (severities2.id IS NULL)
GROUP BY dbo.incidents.id, severities1.[level]
這將返回:
我需要的是:
非常感謝任何幫助,我可以得到這一個!
乾杯, 本
那麼如果幾個後果承擔全部並列爲最高的嚴重程度? – Jonny
那麼它的後果並不重要,我們只需要一個結果就可以說這是事件的嚴重程度。在例如5,5,5的情況下,我們只需要分配一個5。 –