Fonctionnement de la clause UNION
La clause UNION définit une combinaison de la sortie de deux sous-requêtes. Les deux requêtes doivent renvoyer le même nombre d'éléments et des types compatibles.
Pour les besoins de l'opération UNION, tous les types Enterprise JavaBeans de la même
hiérarchie d'héritage sont considérés comme compatibles. UNION exige que les types d'éléments soient définis comme égaux.
query_expression := query_term [UNION [ALL] query_term]* terme_requête := {choisir_dynamique_clause clause_from [clause_where] [group_by_clause] [having_clause] } | (query_expression) }
Vous ne pouvez pas utiliser des objets valeur dépendants avec UNION.
UNION ALL combine tous les résultats en une seule collection.
UNION combine les résultats mais en élimine les doublons.
Si ORDER BY est utilisé conjointement avec UNION, ORDER BY doit faire référence à l'expression de sélection à l'aide de nombres entiers.
Exemples : opération UNION
Cet exemple renvoie une collection de tous les objets employés de type EmpBean et tous les objets gestionnaire de type ManagerBean où ManagerBean est un sous-type de EmpBean.
select e from EmpBean e union all select m from DeptBean d, in(d.mgr) m
Cet exemple présente une requête qui n'est pas valide car EmpBean et DeptBean ne sont pas compatibles.
select e from EmpBean e union all select d from DeptBean d