クエリの対象となる 1 つ以上のテーブルを指定する SELECT 節です。
Synopsis
SELECT ...
FROM [%INORDER] [%FULL] table [[AS] alias][,table [[AS] alias]][,...]
引数
%INORDER オプション — このキーワードにより、クエリ・オプティマイザは、FROM 節にリストされるテーブルの順番で結合を実行します。コンパイル時間を最小限にします。
%FULL
オプション — このキーワードにより、クエリ・オプティマイザは、すべての代替結合シーケンスを検査し、アクセス・パフォーマンスを最大限に引き出します。キーワードが指定されていない場合、これが既定になります。
状況により、両方のキーワードを指定することが重要になる場合があります。
table データを取得する 1 つ以上のテーブルまたはビュー。コンマで区切られたリストまたは JOIN 構文で指定されます。JOIN 構文でのビューの使用にはいくつかの制限が適用されます。括弧で囲んだサブクエリも指定できます。
AS alias オプション — テーブル名のエイリアス。AS キーワードは省略可能で、これの有無に関係なくエイリアスを指定できます。
概要
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 つの最適化オプションが用意されています。
%INORDER
SQL コンパイラ・オプティマイザは、リストされたテーブル順で結合を実行します。矢印構文で参照されるテーブルの結合順に制限はありません。インデックスを使用しても影響は受けません。
指定されるテーブル順が外部結合に必要な順番と一致しない場合、–34 エラーである "%INORDER:FROM order inconsistent with outer join order" が返されます。これを避けるために、%INORDER のみを ANSI 形式の左外部結合で使用することをお勧めします。
ビューとテーブル・サブクエリは、FROM 節で指定された順番で処理されます。
%FULL
このオプション・キーワードにより、コンパイラ・オプティマイザは、すべての代替結合シーケンスを検査し、アクセス・パフォーマンスを最大限に引き出します。例えば、ストアド・プロシージャを生成する場合、コンパイル時間が長くなると最適なアクセス・パフォーマンスを引き出す場合があります。これが、コンパイラの既定の最適化です。
FROM 節に矢印構文を使ってアクセスするテーブルがある場合、%INORDER キーワードと %FULL キーワードの両方を指定すると、順番の制約がないテーブルを作成できます。
FROM 節のサブクエリ
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
関連項目