所以基本上我现在遇到的问题是我无法解决如何在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。 –