階層問合せ疑似列

階層問合せ疑似列は、階層問合せでのみ有効です。階層問合せ疑似列には、次のものがあります。

問合せの中で階層型の関連を定義するには、CONNECT BY句を使用する必要があります。

CONNECT_BY_ISCYCLE疑似列

CONNECT_BY_ISCYCLE疑似列は、現在の行に自身の祖先でもある子がある場合に1を戻します。それ以外の場合は、0を戻します。

CONNECT BY句のNOCYCLEパラメータを指定した場合のみ、CONNECT_BY_ISCYCLEを指定できます。NOCYCLEによって、Oracleは問合せの結果を戻すことができます。このパラメータを指定しないと、データ内のCONNECT BYループのため、問合せは失敗します。

関連項目:

NOCYCLEパラメータの詳細は、階層問合せを参照してください。CONNECT_BY_ISCYCLE疑似列を使用する例は、階層問合せの例を参照してください。

CONNECT_BY_ISLEAF疑似列

CONNECT_BY_ISLEAF疑似列は、現在の行がCONNECT BY条件によって定義されるツリーのリーフである場合に1を戻します。それ以外の場合は、0を戻します。この情報は、特定の行をさらに展開して階層の詳細を表示できるかどうかを示します。

CONNECT_BY_ISLEAFの例

次の例は、hr.employees表の最初の3レベルです。各行がリーフ行か(IsLeaf列が1)、子である行を持つか(IsLeaf列が0)を示しています。

SELECT last_name "Employee", CONNECT_BY_ISLEAF "IsLeaf",
       LEVEL, SYS_CONNECT_BY_PATH(last_name, '/') "Path"
  FROM employees
  WHERE LEVEL <= 3 AND department_id = 80
  START WITH employee_id = 100
  CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4
  ORDER BY "Employee", "IsLeaf";

Employee                      IsLeaf      LEVEL Path
------------------------- ---------- ---------- -------------------------
Abel                               1          3 /King/Zlotkey/Abel
Ande                               1          3 /King/Errazuriz/Ande
Banda                              1          3 /King/Errazuriz/Banda
Bates                              1          3 /King/Cambrault/Bates
Bernstein                          1          3 /King/Russell/Bernstein
Bloom                              1          3 /King/Cambrault/Bloom
Cambrault                          0          2 /King/Cambrault
Cambrault                          1          3 /King/Russell/Cambrault
Doran                              1          3 /King/Partners/Doran
Errazuriz                          0          2 /King/Errazuriz
Fox                                1          3 /King/Cambrault/Fox
. . . 

関連項目:

階層問合せおよびSYS_CONNECT_BY_PATHを参照してください。

LEVEL疑似列

階層問合せによって戻される各行について、LEVEL疑似列は、ルート行に1を戻し、ルートの子には2を戻します(以降同様に続きます)。ルート行は逆ツリー構造の最上位行です。子である行は任意の非ルート行です。親である行は子を持つ任意の行です。リーフ行は子を持たない任意の行です。図3-1に、逆ツリーのノードとそれらのLEVEL値を示します。

関連項目:

階層問合せの概要は、階層問合せを参照してください。LEVEL疑似列の使用に関する制限事項は、IN条件を参照してください。