我目前正在将 SQL Server SQL 语句翻译成它们的 ANSI 通用等效语句,并且我坚持使用 WITH 语句的递归语句。
为了集中讨论这个问题,我将问题简化如下
如果我有两张桌子
报告单位
- col1:键
- col2: ParentReportingUnitKey
设施
- col1:键
- col2: ParentReportingUnitKey
此结构描述了向下至设施的报告单位的层次结构,其中报告单位可能有 0 .. 1 个直接父报告单位和 0 .. n 个子报告单位。
设施是链接到报告单位的“叶”记录。
我需要制作一个 ANSI 92 有效的 SQL 语句(或者最坏的情况下可以在 Oracle、DB2 和 SQL Server 上工作的语句),它将返回与层次结构中任何位置的给定报告单元相关的所有设施。
例如
- ReportingUnit R1 具有 ReportingUnit 子 R1.1 和 R1.2
- ReportingUnit R1.1 有子 R1.1.1、R1.1.2
ReportingUnit R1.2 有子 R1.2.1、R1.2.2
设施 F1 有一个父报告单元 R1.1.1
- 设施 F2 有一个父报告单元 R1.1.2
- 设施 F3 有一个父报告单元 R1.2.1
- 设施 F4 有一个父报告单元 R1.2.2
请记住,ReportingUnit 表中可能有 0 .. n 级递归,如果给定参数 ReportingUnit=R1,我如何从 SQL 语句中返回所有 4 个工具?