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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Published
2021年1月
Language
日本語
Last Update
2021-03-30
dita:mapPath
ja-JP/ncd1596241368722.ditamap
dita:ditavalPath
ja-JP/ncd1596241368722.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

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

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