第3節階層クエリーと自己署名


1.階層クエリー


階層型クエリー(Hierarchical Query)を使用して、テーブルに階層型データがある場合にデータをクエリーする

階層データ


同じテーブルで循環関係データモデルを使用して親データと子データを含む階層データを設計すると、階層データが生成されます.
  • ノード(ルートデータ)
    最高のデータ
  • リーフノード(リーフデータ)
    最小データ
  • 基本的な階層クエリー形式

    SELECT ...
    FROM ...
    WHERE 조건
    START WITH 조건
    CONNECT BY [NOCYCLE] 조건
    [ORDER SIBLINGS BY 컬럼명1, 컬럼명2...];

    行きましょう。Oracle階層クエリー


    構文説明START WITH節データは、CONNECT BY節サブデータ指定PRIOR-CONNECT BY節から-PIOR子=親親から子へ展開データ(順方向)-PIOR親=子が子から親へ展開データ(逆方向)を使用します.NOCYCLEデータを展開中に再び同じデータが出現した場合はCYCLEを展開し、CYCLEデータが発生した後にデータを展開した場合は、実行時にエラーが発生したNOCYCLEを追加し、CYCLE発生後のデータは展開しない.エラーが発生しない場合は、WHEREセクションがすべてのデータ展開を実行した後、指定された条件を満たすデータを展開する.データのみ抽出
  • 階層クエリーで使用する仮想カラム
  • 構文説明LEVEL展開中にルートデータが1、サブデータであれば2/ルートから筋への展開中にそのデータが筋データであれば1、そうでなければ0 CONNET BY ISCYCLE展開中にそのデータが祖先として存在する場合(サブデータがある場合)は1、そうでなければ0、CYCLEオプションでのみ使用可能
  • 階層クエリで使用する関数
  • 関数説明SYS CONNECT BY PATHルートデータから現在位置のデータへのパスマークSYS CONNECT BY PATH(列名、パス区切り記号)CONNECT BY ROOT現在展開するデータのルートデータマークCONNECT BY ROOT(列名)

    私。SQL Server階層クエリー


    2000版までは、階層クエリーを記述する構文はサポートされていません.
    組織図のように、ストレージ・プロシージャの再呼び出しやWhileループ文でのテンポラリ・テーブルの使用など、純粋なクエリーではなく、階層を持つデータはプログラム的に展開されます.
    ただし、SQL Server 2005以降では、1つのクエリで目的の結果を得ることができます.
  • 再帰クエリの処理プロセス
  • CTE式をアンカーメンバーと再帰メンバー
  • に分割
  • アンカーメンバーを実行して、最初の呼び出しまたはデフォルトの結果セット
  • を作成します.
  • Tiは入力として、Ti+1は出力として再メンバ
  • を実行する.
    3段半補は、
  • 個の空のセットを返すまで続く.
  • の結果セットを返します.T 0からTnまでのユニオンALL
  • です