递归查询

时间:2010-10-22 09:12:16

标签: sql recursive-query

我有一个包含以下字段的表

  • Supervisorid
  • Empid

这就像推荐计划一样。一个人可以参考他下面的3个人,即3个是指三个人即4 5 8同样4指9 10和11同样8指的是12,13就是这样..

我想要一个查询来获取Supervisor 3下的所有EmpId

1 个答案:

答案 0 :(得分:3)

您是否希望我们为您编写解决方案,或者解释一下如何构建递归查询?

如何构建它们的示例是http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/ad/samples/clp/s-flt-db2.htm

IBM DB2红皮书有一整章SQL递归。

要点是通常涉及以下步骤:

  • 你定义了一个“种子”。 SELECT SUPID,EMPID,1 AS LVL from EMP SUPERE = 3;

  • 您为此分配了一个名称。使用SRC AS<您的种子>

  • 您可以使用指定的名称定义从种子开始转到“下一级”的方法。 SELECT SRC.SUPID,F.EMPID,SRC.LVL + 1 FROM SRC,EMP WHERE SRC.EMPID = EMP.SUPID

  • 您将两者结合在一起(在WITH子句内)与SRC AS<您的种子在这里> UNION ALL<另一个SELECT在这里>

  • (可选)您可以定义要选择的列。 SELECT EMPID,LVL来自SRC。