所以基本上我目前遇到的问题是我无法弄清楚如何在 SQL Server 中进行高级 JOIN 查询。
我有以下表格:
- 事件
- 结果
- event_consequence (加入)
- 严重性
我的查询需要从数据库中提取每个事件记录并确定其严重性,这是通过与事件关联的后果(在连接表 event_consequence 中)完成的。每个后果记录都有一个与之关联的严重性外键。一旦我得到了与事件相关的所有后果,我只需要返回具有最高严重级别整数值的那个。
因此,正如您可能在这里看到的那样,我需要将所有关系的 event_consequences.incident_id 加入到 events.id 表中,然后从那里将 event_consequence.consequence_id 加入到后果.id 中,然后将严重性加入到后果.严重性等中.
我在做这件事时遇到了很多麻烦,我希望一个非常了解 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]
这将返回:
我需要的是:
非常感谢我能得到的任何帮助!
干杯,本