家系図を分析する

SQL Server における階層型クエリと再帰クエリ

Jasmin Ludolf

Content Developer

家系図

familyTree は次で表されます:

  • 人の ID
  • 人の Name
  • 親のIDである parentID

階層を表す要素:

  • ID
  • parentID

家系図の画像

SQL Server における階層型クエリと再帰クエリ

総まとめ

再帰CTEの原則を思い出しましょう:

  • アンカーメンバーで再帰を初期化
  • 再帰メンバーで再帰処理を実装
  • 終了条件を定義

動作の原則:

  • 再帰のレベルを取得
  • 再帰の結果を1つのフィールドに結合
SQL Server における階層型クエリと再帰クエリ

家系図に関する質問

世代数を取得

  • LEVEL を定義

    -- Anchor member
    0 as LEVEL
    -- Recursive member
    LEVEL + 1
    
  • LEVELを数えて世代数を取得 COUNT(LEVEL)

Generations:
100
SQL Server における階層型クエリと再帰クエリ

家系図に関する質問

可能な親を1つのフィールドに集約

  • 再帰結果を1フィールドに結合
    -- Anchor member
    CAST(ID AS VARCHAR(MAX)) as Parent
    -- Recursive member
    Parent + ' -> ' + CAST(parentID AS VARCHAR(MAX))
    
+---------------------------------------------+
| Name            | Parent                    |
|-----------------|---------------------------|
|Dominik Egarter  | 100 -> 101 -> 102 ->103   |
+---------------------------------------------+
SQL Server における階層型クエリと再帰クエリ

家系図を確認しましょう!

SQL Server における階層型クエリと再帰クエリ

Preparing Video For Download...