0

プロジェクトに階層クエリを実装しようとしています。私はインターネット上のほとんどのドキュメントを読みましたが、その中で PRIOR の使用に関連する情報を得ることができませんでした.

SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR EMPNO=MGR
START WITH MGR IS NULL;

PRIOR はこのクエリで重要な役割を果たしますが、PRIOR の位置を変更したり、クエリから削除したりすると、別の結果が得られます。
これの正確な使用法を理解するのを手伝ってくれると本当に助かります。
ありがとう :)

4

2 に答える 2

2

階層とは、テーブルの 1 つの行が「親」であり、別の行が「子」であることを意味します。PRIOR誰が誰であるかを示すために使用されます。句CONNECT BY PRIOR EMPNO = MGRは、2 つの行が同じ値を持つが、1 つの行が columnEMPNOにあり、2 番目の行が columnMGRにある場合、2 番目が「親」であり、1 番目が「子」であることを意味します。だから、クエリ

SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR = 'John'

John (および John 自身) のすべての部下を返し、クエリ

SELECT EMPNO,ENAME,MGR,LEVEL
FROM TMP_PCH
CONNECT BY PRIOR MGR = EMPNO
START WITH MGR = 'John'

John (および John 自体) のすべてのボスを返します。

于 2015-03-30T15:22:43.660 に答える
1

PRIOR前の階層レベルへの参照として理解できます。
PRIOR MGR = EMPNO「前のレベルのマネージャーが従業員になる」という意味なので、ボトムアップ
PRIOR EMPNO = MGRは「前のレベルの従業員がマネージャーになる」という意味なので、トップダウンになります。

このように書くとEMPNO = PRIOR MGR、「従業員から上司に向かう」と読むことができます。

一気飲み

             MGR
PRIOR MGR    EMPNO
PRIOR EMPNO

対トップダウン

PRIOR MGR
PRIOR EMPNO  MGR
             EMPNO
于 2015-03-30T15:41:22.457 に答える