Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Ultra Light データベース管理とリファレンス » Ultra Light SQL リファレンス » Ultra Light SQL 文

 

Ultra Light FROM 句

この句は、SELECT 文に必要なテーブルまたはビューを指定するために使用します。

構文
FROM  table-expression, ...
table-expression :
table-name [ [ AS ] correlation-name ]
| ( select-list ) [ AS ] derived-table-name ( column-name, ... )
| ( table-expression )
| table-expression join-operator table-expression [ ON search-condition ] ...
join-operator :
,
| INNER JOIN
| CROSS JOIN 
| LEFT OUTER JOIN 
| JOIN
パラメータ

table-name   ベース・テーブルまたはテンポラリ・テーブル。Ultra Light では、異なるユーザがテーブルを所有できません。ユーザ ID でテーブルを修飾した場合、ID は無視されます。

correlation-name   文の他の部分からテーブルを参照するときに使用する識別子。たとえば、次の文で、a は Contacts テーブルの相関名、b は Customers テーブルの相関名として定義されています。

SELECT *
FROM Contacts a, Customers b 
WHERE a.CustomerID=b.ID;

derived-table-name   派生テーブルは、FROM 句でネストされている SELECT 文です。

派生テーブルの Select リストの項目は、派生テーブル名 (オプション) に続いてピリオド (.) とカラム名を指定して参照します。カラム名があいまいではない場合は、カラム名だけを使用できます。

SELECT 文内から派生テーブルを参照することはできません。式のサブクエリを参照してください。

join-operator   ジョインのタイプを指定します。カンマ (,) または CROSS JOIN を指定した場合は、ON サブ句を指定できません。JOIN を指定した場合は、ON サブ句を指定する必要があります。INNER JOIN と LEFT OUTER JOIN の場合は、ON サブ句はオプションです。

備考

FROM 句を指定しない場合、SELECT 文の式は定数式である必要があります。

派生テーブル

この説明はテーブルについてのものですが、特に注意書きがなければ派生テーブルにも適用します。

FROM 句は、指定した全テーブルのすべてのカラムで構成される結果セットを作成します。最初に、指定したテーブルのすべてのローの組み合わせが結果セットの中に入ります。次に、JOIN 条件か WHERE 条件、またはその両方の分だけ、通常は組み合わせの数が減ります。

ジョインのタイプを指定しないで、カンマ区切りリストとしてテーブルをリストする場合、デフォルトでは CROSS JOIN が使用されます。

INNER ジョインの場合、ON 句または WHERE 句を使用してジョインの結果を制限すると、同じ結果が返されます。OUTER ジョインの場合、これらは同じではありません。

注意

Ultra Light では、KEY JOIN と NATURAL JOIN の各ジョインはサポートされていません。

参照

次は、有効な FROM 句です。

...
FROM Employees
...
...
FROM Customers
CROSS JOIN SalesOrders
CROSS JOIN SalesOrderItems
CROSS JOIN Products
...

次のクエリは、派生テーブルを使用して、SalesOrders テーブルに 4 件以上の注文がある Customers テーブルの顧客名を返します。

SELECT Surname, GivenName, number_of_orders
FROM Customers JOIN
     ( SELECT CustomerID, COUNT(*)
       FROM SalesOrders
       GROUP BY CustomerID )
     AS sales_order_counts( CustomerID, number_of_orders )
ON ( Customers.id = sales_order_counts.CustomerID )
WHERE number_of_orders > 3;