7.5.1 FROM句の指定形式および規則
FROM句には,検索対象とする表を指定します。
- 〈この項の構成〉
(1) 指定形式
FROM句::=FROM 表参照〔,表参照〕…
(2) 指定形式の説明
- 表参照:
-
検索対象となる表を表参照の形式で指定します。表参照の詳細については,「7.11 表参照」を参照してください。
複数の表参照を指定した問合せ(FROM句に表名,問合せ名,導出表,表関数導出表,および集まり導出表を複数含む問合せ)を実行する場合,これを表の結合といいます。
また,複数の表参照をコンマ( , )で区切って指定する結合をコンマ結合といいます。
(3) 規則
-
FROM句に指定するすべての表参照中に指定できる表名,問合せ名,導出表,表関数導出表,および集まり導出表の数は,最大64個になります。表名の指定数の算出方法を次に示します。
-
表参照に表名を指定した場合:1
-
表参照に導出表を指定した場合:1
-
表参照に結合表を指定した場合:結合表に指定した表名,および導出表の合計数
-
WITH句に指定した問合せ名を指定した場合:1
-
表参照に表関数導出表を指定した場合:1
-
表参照に集まり導出表を指定した場合:1
表名の指定数の算出例を次に示します。
(例)
WITH "Q1" AS (SELECT * FROM "T6","T7") SELECT * FROM "T1", ...[a] "T2" LEFT OUTER JOIN "T3" ON "T2"."C1"="T3"."C1", ...[b] (SELECT * FROM "T4","T5") "W1", ...[c] "Q1", ...[d] TABLE(ADB_CSVREAD(MULTISET['/dir/file.csv.gz'], 'COMPRESSION_FORMAT=GZIP;')) AS "W2" ("C1" INT), ...[e] UNNEST("T1"."C1") AS "W3" ("C1") ...[f]
[説明]
-
表名(T1)を指定しているため,表名の数は1つとなります。
-
結合表を指定しているため,表名の数は結合表に指定した表名(T2およびT3)の合計で2つとなります。
-
導出表(W1)を指定しているため,導出表の数は1つとなります。
-
WITH句に指定した問合せ名(Q1)を指定しているため,問合せ名の数は1つとなります。
-
表関数導出表を指定しているため,1と計算します。
-
集まり導出表を指定しているため,1と計算します。
したがって,上記の例の場合,すべての表参照に指定された表名の指定数は,合計7になります。
-
-
FROM句の結果の列の記述子は,FROM句に指定した表の列の記述子と同じになります。また,FROM句の結果の列の順序は,FROM句に指定した表の列の順序になります。次に示すSELECT文を実行した場合を例にして具体的に説明します。
(例)
SELECT * FROM "T1","T2"
表T1にC1列とC2列が,表T2にC3列とC4列が定義されているとします。この場合,FROM句の結果の列の順序は,C1,C2,C3,C4となります。
- メモ
-
列の記述子とは,列の名称,データ型,データ長,ナル値の有無,列ID(先頭の列からの番号)から成る列の属性情報のことです。
(4) 例題
FROM句の指定例を例題を使って説明します。
- 例題
-
販売履歴表(SALESLIST)から,2011/9/6以降に商品コードP002の商品を購入した顧客の,顧客ID(USERID),商品コード(PUR-CODE),購入日(PUR-DATE)を検索します。
SELECT "USERID","PUR-CODE","PUR-DATE" FROM "SALESLIST" WHERE "PUR-DATE">=DATE'2011-09-06' AND "PUR-CODE"='P002'
下線部分がFROM句の指定です。
(5) 留意事項
次に示す場合は,作業表が作成されることがあります。作業表が作成される作業表用DBエリアの容量が正しく見積もられていない場合,性能低下の原因となることがあります。作業表用DBエリアの容量見積もりについては,マニュアルHADB システム構築・運用ガイドを参照してください。
-
1つのFROM句に,複数の表参照を指定した場合
-
1つのSQL文中に,同じビュー表名を複数の個所に指定した場合
-
1つのSQL文中に,WITH句に指定した問合せ名を複数の個所に指定した場合
作業表の詳細については,マニュアルHADB AP開発ガイドの作業表が作成されるSQLを実行する際の考慮点を参照してください。