我有一个包含以下字段的表
- 监督者
- 空的
这就像一个推荐计划。一个人可以指代他下面的 3 个人,即 3 指代三个人,即 4 5 8 类似 4 指代 9 10 和 11 同样 8 指代 12,13 是这样的..
我想要一个查询来获取 Supervisor 3 下的所有 EmpId
我有一个包含以下字段的表
这就像一个推荐计划。一个人可以指代他下面的 3 个人,即 3 指代三个人,即 4 5 8 类似 4 指代 9 10 和 11 同样 8 指代 12,13 是这样的..
我想要一个查询来获取 Supervisor 3 下的所有 EmpId
您是否希望我们为您编写解决方案,或者解释一下如何构建递归查询?
它们是如何建立的一个例子是http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/ad/samples/clp/s-flt -db2.htm。
IBM DB2 红皮书有一整章是关于 SQL 递归的。
要点是通常涉及以下步骤:
你定义一个“种子”。从 EMP 中选择 SUPID、EMPID、1 作为 LVL,其中 SUPID = 3;
您为此分配了一个名称。WITH SRC AS <你的种子在这里>
您可以使用指定的名称从种子开始定义进入“下一个级别”的方式。从 SRC、EMP 中选择 SRC.SUPID、F.EMPID、SRC.LVL+1,其中 SRC.EMPID=EMP.SUPID
您将两者结合在一起(在 WITH 子句内) WITH SRC AS <your seed here> UNION ALL <the other SELECT here>
(可选)您定义要选择的列。从 SRC 中选择 EMPID、LVL。