2010-10-22 161 views
2

我有一個包含以下字段遞歸查詢

  • Supervisorid
  • EMPID表

這就像一個推薦計劃。一個傢伙可以參考他下面的3個傢伙ie,3指的是三個傢伙即4 5 8同樣4指的是9 10和11同樣8指的是12,13這樣去吧..

我想查詢得到Supervisor 3下的所有EmpId

+0

即,你想擁有4,5,8,9,10,11,12,13,對吧? – phimuemue 2010-10-22 09:14:29

+0

也許這可以幫助你:http://sackoverflow.com/questions/53108/is-it-possible-to-make-a-recursive-sql-query – phimuemue 2010-10-22 09:16:40

+0

可能重複的[Sql Server2005查詢問題](http:///stackoverflow.com/questions/3993927/sql-server2005-query-problem) – 2010-10-22 13:03:22

回答

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 WHERE SUPID = 3;

  • 您分配給此名稱。使用SRC AS <您的種子在這裏>

  • 您定義從種子開始,使用指定名稱轉到「下一級」的方法。 SELECT SRC.SUPID,F.EMPID,SRC.LVL + 1從SRC,EMP WHERE SRC.EMPID = EMP.SUPID

  • 你把兩者結合起來(內WITH子句)與Src AS <你的種子在這裏> UNION ALL <其他選擇此處>

  • (可選)您可以定義要選擇的列。 SELECT EMPID,LVL FROM SRC。