クエリの対象となる 1 つ以上のテーブルを指定する SELECT 節です。
Synopsis
SELECT ...
FROM [%INORDER] [%FULL] table [[AS] alias][,table [[AS] alias]][,...]
FROM 節は、
SELECT 文内でデータを照会する 1 つ以上のテーブル (もしくはビューまたはサブクエリ) を指定します。複数のテーブルは、コンマで区切られたリスト、または他の JOIN 構文によって区切られたリストとして指定されます。各テーブル名には、オプションとしてエイリアスを指定できます。
テーブル名のエイリアスは、
SELECT 文で複数のテーブルのフィールド名を指定するときに使用されます。FROM 節に 2 つ (またはそれ以上) のテーブルが指定されている場合は、
tablename.fieldname の形式で
SELECT 節の各フィールドを指定することで、どのテーブルのフィールドを対象とするのかを明確にできます。この場合、テーブル名は長い名前が多いので、短いエイリアスを指定すると便利です。
以下の例は、テーブル名のエイリアスの使用方法を示します。
SELECT e.Name,c.Name
FROM Sample.Company AS c,Sample.Employee AS e
AS キーワードは省略できます。このキーワードは、互換性とわかりやすい表記のためのものです。
複数のテーブルを指定すると、Caché SQL はこれらのテーブルに対して結合オペレーションを実行します。テーブル名がコンマで区切られているときは、交差結合が実行されます。テーブル名リストに他の結合構文 (コンマではなく) を指定すると、別のタイプの結合オペレーションを実行できます。詳細は、"
JOIN" を参照してください。
SQL コンパイラがこれらの結合を実行する方法は、実行時のパフォーマンスに影響する場合があります。このため、Caché SQL には %INORDER と %FULL という 2 つの最適化オプションが用意されています。
SQL コンパイラ・オプティマイザは、リストされたテーブル順で結合を実行します。矢印構文で参照されるテーブルの結合順に制限はありません。インデックスを使用しても影響は受けません。
指定されるテーブル順が外部結合に必要な順番と一致しない場合、34 エラーである "%INORDER:FROM order inconsistent with outer join order" が返されます。これを避けるために、%INORDER のみを ANSI 形式の左外部結合で使用することをお勧めします。
ビューとテーブル・サブクエリは、FROM 節で指定された順番で処理されます。
-
Streamed View : %INORDER は、ビュー内のテーブル処理順に影響を与えません。
-
Merged View : %INORDER は、ビューの参照時にビューのテーブルをビューの FROM 節順に処理します。
このオプション・キーワードにより、コンパイラ・オプティマイザは、すべての代替結合シーケンスを検査し、アクセス・パフォーマンスを最大限に引き出します。例えば、ストアド・プロシージャを生成する場合、コンパイル時間が長くなると最適なアクセス・パフォーマンスを引き出す場合があります。これが、コンパイラの既定の最適化です。
FROM 節に矢印構文を使ってアクセスするテーブルがある場合、%INORDER キーワードと %FULL キーワードの両方を指定すると、順番の制約がないテーブルを作成できます。
FROM 節ではサブクエリを指定できます。サブクエリは括弧で囲まれます。サブクエリは、JOIN 構文での使用や AS キーワードを使用したオプションのエイリアス割り当てなども含めて、テーブルと同様に扱われます。FROM 節には、複数のテーブル、ビュー、およびサブクエリを任意の組み合わせで含むことができますが、"
JOIN" で説明されている JOIN 構文の制約を受けます。
以下の例は、FROM 節のサブクエリを示しています。
SELECT name,region
FROM (SELECT t1.name,t1.state,t2.region
FROM Employees AS t1 LEFT OUTER JOIN Regions AS t2
ON t1.state=t2.state)
GROUP BY region