ルールと制限を以下に示します。
- 派生テーブルとビューの意味は同じであり、制限についても同様です。
- 派生テーブルの有効範囲は、サブクエリーを呼び出したSELECT文のレベルに限定されます。
- 文内で作成する各派生テーブルには固有なテーブル相関名が必要です。
- 派生テーブルでは、次のオプションを指定することはできません。
- ORDER BY
- WITH … BY
- 派生テーブルを作成するために使用するsubqueryの選択リストで列名を指定する場合、完全修飾列名が必須です。そうしないと、あいまいな列名になります。
このルールは、ビューを作成するためのルールと一致しています。
このクエリーで、派生テーブルを作成するサブクエリーの選択リスト中で指定されている列が修飾されていません。
SELECT * FROM (SELECT * FROM tab1 AS t1, tab2 AS t2 WHERE t1.col2 = t2.col3) AS derived_table; *** Failure 3515 Duplication of column COL1 in creating a Table, View, Macro or Trigger. Statement# 1, Info =95 *** Total elapsed time was 1 second.
正しい問合わせは以下のように作成されます。
SELECT * FROM (SELECT t1.col1, t1.col2, t1.col3, t2.col1, t2.col2, t2.col3 FROM tab1 AS t1, tab2 AS t2 WHERE t1.col2=t2.col3) AS derived_table (t1_col1, t1_col2, t1_col3, t2_col1, t2.col2, t2_col3);
- 派生テーブルの内容を定義するサブクエリーに、SELECT AND CONSUME文を含めることはできません。