Clause SELECT
La clause SELECT se compose d'une unique variable d'identification définie dans dans la clause FROM ou d'une expression de chemin d'accès à valeur unique ayant pour résultat une référence d'objet ou une valeur CMP (Container Managed Persistence). Vous pouvez utiliser le mot clé DISTINCT pour éliminer les références en double.
SELECT [ ALL | DISTINCT ] { expression-chemin-valeur-unique | expression agrégation | OBJECT ( variable-identification ) }
Une requête qui définit une méthode de recherche doit renvoyer un type d'objet cohérent avec le foyer qui est associé à la méthode de recherche. Par exemple, une méthode de recherche d'un foyer de divisions ne peut pas renvoyer d'objets employé.
Exemple : Clause SELECT
SELECT OBJECT(e) FROM EmpBean ej, EmpBean e WHERE ej.name = 'John' and e.salary > ej.salary
SELECT DISTINCT e.dept FROM EmpBean e where e.salary < 20000
SELECT e.dept.name FROM EmpBean e where e.salary < 2000
La requête précédente renvoie une collection de noms des divisions ayant des employés dont le salaire est inférieur à 20000.
SELECT avg(e.salary) FROM EmpBean e
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[z/OS]](../images/ngzos.gif)
Exemple : Requêtes dynamiques valides
SELECT { ALL | DISTINCT } [ selection , ]* selection sélection ::= { expression | sous-requête_scalaire [[AS] id ] }
Une sous-requête scalaire est une sous-requête qui ne renvoie qu'une valeur.
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