17.10 - 例: 単純再帰的ビュー - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1144-171K-JPN
Language
日本語 (日本)

この例は、次の基本テーブルをその基本として使用して、永久再帰処理の可能性を制御するカウンターを持つ単純再帰的レビュー定義を構築します。

Partlist
Part Subpart Quantity
00 01 5
00 05 3
01 02 2
01 03 3
01 04 4
02 05 7
02 06 6

このビューは、次のような質問に回答するために設計されています。部品01を構築するにはどの部品が必要でしょうか。

この定義で記されているとおり、データの中には100を超えるレベルが存在する可能性があるため、実際にはこの問合わせによって質問の回答は得られません。厳密に言うと、このリクエストが尋ねているのは次の質問です。部品01を構築するには、最大100のレベルがある中で、どの部品が必要でしょうか。

再帰的ビュー定義は、次のようになります。

    CREATE RECURSIVE VIEW rpl (part, subpart, quantity, depth) AS (
      SELECT root.part, root.subpart, root.quantity, 0 AS depth
      FROM partlist AS root
      WHERE root.part = '01'
    UNION ALL
      SELECT child.part, child.subpart, child.quantity, parent.depth + 1
      FROM rpl AS parent, partlist AS child
      WHERE parent.subpart = child.part
      AND   parent.depth <= 100);

部品01を構築するにはどの部品が必要かという質問に答える問合わせが、次のSELECTリクエストです。

    SELECT part, subpart, quantity
    FROM rpl
    ORDER BY part, subpart, quantity;

この問合わせの結果セットは次のとおりです。

Part Subpart Quantity
01 02 2
01 03 3
01 04 4
02 05 7
02 06 6