次の例は、サンプルアプリケーションの emp テーブルを示しています。 emp テーブルの行は、mgr 列に基づいて階層を形成します。 この列には、従業員のマネージャーの従業員番号が含まれています。 各従業員には最大 1 人のマネージャーがいます。 KING は会社の社長であるため、マネージャーはいません。 KING の mgr 列が null です。 1 人の従業員が複数の従業員のマネージャーである場合があります。 この関係は、典型的なツリー構造の階層的な組織図を形成します。 次の図は、この関係を示しています。

従業員組織階層

この関係に基づいて階層クエリを形成するために、SELECT 文には次の句が含まれています。CONNECT BY PRIOR empno = mgr。 たとえば、会社の社長 KING の従業員番号が 7839 である場合、mgr 列が 7839 であるすべての従業員は KING に報告します。 この場合、JONES、BLAKE、CLARK は、KING の子ノードであるため、適格な従業員です。 同様に、従業員 JONES の場合、mgr 列が 7566 と一致する他のすべての従業員は JONES の子ノードです。 この例では、適格な従業員は SCOTT と FORD です。

組織図の最上部は KING なので、このツリーにはルートノードが 1 つあります。 START WITH mgr IS NULL 句は、初期ルートノードとして KING のみを選択します。

次の例は、完全な SELECT 文を示しています。

SELECT ename, empno, mgr
FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr;

クエリ出力の行は、各ブランチをルートからリーフに移動し、上から下、左から右に移動します。 次の例は、このクエリの出力を示しています。

 ename  | empno | mgr
--------+-------+------
 KING   |  7839 |
 JONES  |  7566 | 7839
 SCOTT  |  7788 | 7566
 ADAMS  |  7876 | 7788
 FORD   |  7902 | 7566
 SMITH  |  7369 | 7902
 BLAKE  |  7698 | 7839
 ALLEN  |  7499 | 7698
 WARD   |  7521 | 7698
 MARTIN |  7654 | 7698
 TURNER |  7844 | 7698
 JAMES  |  7900 | 7698
 CLARK  |  7782 | 7839
 MILLER |  7934 | 7782
(14 rows)