プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

階層問合せ疑似列

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

問合せの中で階層型の関連を定義するには、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を戻します(以降同様に続きます)。ルート行は逆ツリー構造の最上位行です。子である行は任意の非ルート行です。親である行は子を持つ任意の行です。リーフ行は子を持たない任意の行です。図2-1に、逆ツリーのノードとそれらのLEVEL値を示します。

図2-1 階層ツリー

図2-1の説明が続きます。
「図2-1 階層ツリー」の説明


関連項目:

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