7.4. Combiner des requ�tes

Les r�sultats de deux requ�tes peuvent �tre combin�s en utilisant les op�rations ensemblistes : union, intersection et diff�rence. La syntaxe est

requete1 UNION [ALL]
requete2
requete1 INTERSECT [ALL]
requete2
requete1 EXCEPT [ALL]
requete2

requete1 et requete2 sont des requ�tes pouvant utiliser toutes les fonctionnalit�s discut�es jusqu'ici. Les op�rations ensemblistes peuvent �galement �tre combin�es et cha�n�es. Ainsi

requete1 UNION requete2 UNION requete3

qui signifie r�ellement

(requete1 UNION requete2) UNION requete3

UNION ajoute simplement le r�sultat de requete2 au r�sultat de requete1 (il n'y a cependant aucune garantie sur l'ordre effectif de retour des lignes). De plus, toutes les lignes dupliqu�es sont �limin�es, au sens de DISTINCT, � moins que UNION ALL ne soit utilis�.

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 celui de requete2. (On parle parfois de diff�rence entre deux requ�tes.) L� aussi, 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, il est imp�ratif que les deux requ�tes soient <<�compatibles pour une union�>>. Cela 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 cela est d�crit dans Section 10.5.