SELECT 文節
SELECT 文節は、FROM 文節内で定義された 単一の識別変数か、 オブジェクト参照またはコンテナー管理パーシスタンス (CMP) 値を求める 単一値のパス式の、いずれかで構成されます。 DISTINCT キーワードを使用し、重複参照を取り除くことができます。
finder および select 照会について、SELECT 文節の構文は以下の例に示されています。
SELECT [ ALL | DISTINCT ] { single-valued-path-expression | aggregation expression | OBJECT ( identification-variable ) }
finder メソッドを定義する照会の場合、その照会は、 finder メソッドに関連付けられたホームと一致したオブジェクト型を戻す必要があります。 例えば、部門ホームの finder メソッドは、従業員オブジェクトを戻すことはできません。
例: SELECT 文節
下記は、John より報酬を得ているすべての従業員を検出します。
SELECT OBJECT(e) FROM EmpBean ej, EmpBean e WHERE ej.name = 'John' and e.salary > ej.salary
下記は、1 人以上の従業員が 20000 より少ない報酬を得ているすべての部門を検出します。
SELECT DISTINCT e.dept FROM EmpBean e where e.salary < 20000
select メソッド照会は、下記のように、任意の値を求めるパス式を持つことができます。
SELECT e.dept.name FROM EmpBean e where e.salary < 2000
上記の照会は、20000 より少ない報酬を得ている従業員のいる部門の名前値のコレクションを戻します。
select メソッド照会は、集約値を戻します。
SELECT avg(e.salary) FROM EmpBean e
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
例: 有効な動的照会
動的照会の構文は次のとおりです。
SELECT { ALL | DISTINCT } [ selection , ]* selection selection ::= { expression | scalar-subselect [[AS] id ] }
scalar-subselect は、単一の値を戻す副選択です。
下記は、動的照会の例です。
SELECT e.name, e.salary+e.bonus as total_pay from EmpBean e
SELECT SUM( e.salary+e.bonus) from EmpBean e where e.dept.deptno = ?1