作成または置換される再帰的ビューの名前。
データベース オブジェクトの命名ルールについては、<Teradata Vantage™ SQL基礎、B035-1141>を参照してください。
view_nameが完全に修飾されていない場合、デフォルトのデータベースが使用されます。
- database_name
- user_name
- view_nameを含むデータベースまたはユーザー(現在のデータベースまたはユーザー以外の場合)。
- column_name
- ビュー列または列セットの必須の名前。複数の列を指定する場合には、それぞれがビュー用に表示される順序で、名前を列挙します。
- AS
- このキーワードの後にビュー定義が続くことを指定します。
例: 単純再帰的ビュー
この例は、次の基本テーブルをその基本として使用して、永久再帰処理の可能性を制御するカウンターを持つ単純再帰的レビュー定義を構築します。
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 |
例: 単純なREPLACE RECURSIVE VIEW
次の例は、recという名前の再帰的ビューの既存の定義を指定のSQLコードで置換しています。
REPLACE RECURSIVE VIEW rec(p, mycount) AS ( SELECT n, 0 AS mycount FROM t WHERE n = 1 UNION ALL SELECT rec.p, rec.mycount + 1 FROM t, rec WHERE rec.p = t.n AND rec.mycount <= 20