次のフィールドを含むテーブルがあります
- 監督者
- エンピッド
これは紹介プログラムのようなものです。つまり、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 WHERE SUPID = 3 から LVL として SUPID、EMPID、1 を選択します。
これに名前を割り当てます。WITH SRC AS <ここにシード>
割り当てられた名前を使用して、シードから開始して「次のレベル」に進む方法を定義します。SRC.SUPID、F.EMPID、SRC.LVL+1をSRCから選択、EMP WHERE SRC.EMPID=EMP.SUPID
この 2 つを (WITH 句の中で) 結合します WITH SRC AS <ここにあなたのシード> UNION ALL <ここに他の SELECT>
(オプション) 選択する列を定義します。SRC から EMPID、LVL を選択します。