FROM 文節

FROM 文節は、 照会が適用される、オブジェクトのコレクションを指定します。 各コレクションは、抽象スキーマ名 (ASN) または関係を識別するパス式のいずれかによって指定され ます。 識別変数は、コレクションごとに定義されます。

概念的には、照会のセマンティクスは、タプルの一時コレクション R を形成し、コレクションのエレメン トはコレクションからのオブジェクトの考えられるすべての組み合わせで構成されています。 このコレクションは、パスの関係と JOIN 操作による制約の影響を受けます。 JOIN は、内部 または外部 結合のいずれかです。

識別変数は、タプルのエレメントにバインドされます。 一時コレクションを形成後、WHERE 文節の検索条件が R に適用され、 新たに一時コレクション R1 が形成されます。 最終結果を得るために、ORDER BY、GROUP BY、HAVING、および SELECT 文節が R1 に適用されます。

from_clause::=FROM identification_variable_declaration [, {identification_variable_declaration | 
collection_member_declaration } ]*

identification_variable_declaration::= range_variable_declaration [join]*

join :=  [ { LEFT [OUTER] | INNER  }]  JOIN  {collection_valued_path_expression | single_valued_path_expression}
 [AS] identifier

例: コレクションの結合

DeptBean には、レコード 10、20、および 30 が含まれています。 EmpBean には、部門 10 に関係のあるレコード 1、2、および 3 と、 部門 20 に関係のあるレコード 4 および 5 が含まれています。 部門 30 には従業員はいません。

SELECT d FROM  DeptBean AS d, EmpBean AS e
WHERE d.name = e.name

コンマ構文は、内部結合を実行し、その結果、考えられるすべての組み合わせができます。 この例では、R は 15 のタプル (3 つの部門 x 5 人の従業員) で構成されています。 コレクションが空の場合は R も空です。 キーワード AS はオプションです。

次に、コレクションがそれ自体と結合できる例を示します。
SELECT d FROM DeptBean AS d, DeptBean AS d1
R は、9 つのタプル (3 つの部門 x 3 つの部門) で構成されています。

例: 関係の結合

コレクションは、次のように、 以前に宣言された ID に基づく関係にすることができます。
SELECT e FROM DeptBean AS d , IN (d.emps) AS e
R には 5 つのタプルが含まれます。 部門 30 は、従業員がいないため、R には表示されません。 部門 10 は 3 つのタプルで表示され、部門 20 は 2 つのタプルで表示されます。 IN は、多値の関係のみを参照できます。 以下は無効です。
SELECT m FROM EmpBean e,  IN( e.dept.mgr) as m   INVALID 
関係と結合する場合、 次のように代替構文 INNER JOIN (キーワード INNER はオプション) を使用することもできます。
SELECT e FROM DeptBean AS d INNER JOIN d.emps AS e
ASN 宣言 (前述の照会では d) の後に 1 つ以上の JOIN 文節を続けることができます。JOIN キーワードの後に続く関係は、ASN 宣言に (直接または間接的に) 関連している必要がありま す。 IN 文節の場合とは異なり、JOIN 文節で使用される関係は、単一値でも多値でもかまいません。 この照会のセマンティクスは、次の照会の場合と同じです。
SELECT e FROM DeptBean AS d , IN (d.emps) AS e
複数の結合を一緒に使用できます。
SELECT m FROM EmpBean e JOIN e.dept d JOIN d.mgr m
これは、以下と同等です。
SELECT m FROM EmpBean e JOIN e.dept.mgr m

例: OUTER JOIN

OUTER JOIN の結果として、leftright のオペランドの組み合わせが含まれる一時コレクションができます。これは関係制約の対象であり、左のオペランドは常に R に含まれます。外部結合の例では、コレクション d.emps は空であっても、結果の一時コレクション R には部門 30 が含まれます。このタプルには、部門 30 と NULL 値が含まれています。 照会で e を参照すると、ヌル値が得られます。
SELECT e FROM DeptBean AS d LEFT OUTER JOIN d.emps AS e
キーワード OUTER は、次に示すようにオプションです。
SELECT e FROM DeptBean AS d LEFT JOIN d.emps AS e
INNER と OUTER JOIN の組み合わせを使用することもできます。
SELECT m FROM EmpBean e JOIN e.dept d LEFT JOIN d.mgr m

トピックのタイプを示すアイコン 概念トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cque_from
ファイル名:cque_from.html