7.4. Combiner des requêtes
Les résultats de deux requêtes peuvent être combinés en utilisant les
opérations d'ensemble : union, intersection et différence. La syntaxe
est
requete1 UNION [ALL] requete2
requete1 INTERSECT [ALL] requete2
requete1 EXCEPT [ALL] requete2
requete1
et
requete2
sont les requêtes pouvant
utiliser toutes les fonctionnalités discutées ici. Les opérations
d'ensemble peuvent aussi être combinées et chaînées, par exemple
requete1 UNION requete2 UNION requete3
signifie réellement
(requete1 UNION requete2) UNION requete3
UNION ajoute effectivement le résultat de
requete2
au résultat de
requete1
(bien qu'il n'y ait
pas de garantie qu'il s'agit de l'ordre dans lequel les lignes sont
réellement renvoyées). De plus, il élimine les lignes dupliquées du
résultat, de la même façon que DISTINCT,
sauf si UNION ALL est utilisée.
INTERSECT renvoie toutes les lignes qui sont
à la fois dans le résultat de
requete1
et dans le résultat de
requete2
. Les lignes dupliquées
sont éliminées sauf si INTERSECT ALL est
utilisé.
EXCEPT renvoie toutes les lignes qui sont
dans le résultat de
requete1
mais pas dans le résultat de
requete2
(ceci est quelque fois appelé la
différence entre deux requêtes). De
nouveau, les lignes dupliquées sont éliminées sauf si EXCEPT ALL est utilisé.
Pour calculer l'union, l'intersection ou la différence de deux
requêtes, les deux requêtes doivent être « compatibles pour une union », ce qui signifie
qu'elles doivent renvoyer le même nombre de colonnes et que les
colonnes correspondantes doivent avoir des types de données
compatibles, comme décrit dans la Section 10.5,
« Constructions UNION, CASE et constructions relatives ».