我正在将SQL Server SQL语句翻译成其目前的ANSI通用等效语句,并且使用WITH语句阻塞了递归语句。ANSI 92递归SQL语句要求
对于专注于问题的缘故,如下
如果我有两个表
ReportingUnit
- 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
- 发基lity F3有父报告单位R1.2.1
- 设施F4有父报告单位R1.2.2
铭记有可能是0 .. N的ReportingUnit表递归的水平,怎么能在给定参数ReportingUnit = R1的情况下,我从SQL语句返回所有4个设施?
+1。嵌套集是在SQL中执行任意深度层次结构的方式;父行外键几乎永远不是可用的解决方案。 – bobince 2008-11-24 13:38:02