La plupart des requêtes SQL utilisent une seule instruction qui renvoie les données d'une ou plusieurs tables. SQL vous permet également d'exécuter plusieurs requêtes distinctes en même temps et d'afficher le résultat sous la forme d'un seul ensemble de données. De telles requêtes combinées sont généralement appelées jointures ou requêtes composées.
Les requêtes SQL sont combinées à l'aide de l'opérateur UNION. Pour ce faire, vous devez spécifier chaque requête SELECT et placer le mot-clé UNION entre elles. Il n'y a pas de limite au nombre d'utilisations de l'opérateur UNION dans une requête générale. Dans la section précédente, nous avons noté que MS Access n'a pas la capacité de créer une union externe complète, nous verrons maintenant comment cela peut être réalisé via l'opérateur UNION.
Run SQLSELECT *
FROM Sumproduct
LEFT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
UNION
SELECT *
FROM Sumproduct
RIGHT JOIN Sellers2
ON Sumproduct.City = Sellers2.City
Nous voyons que la requête a affiché à la fois toutes les colonnes de la première table et de la seconde, que tous les enregistrements aient ou non des équivalents dans une autre table.
Il convient également de noter que dans de nombreux cas, au lieu de UNION, nous pouvons utiliser la clause WHERE avec de nombreuses conditions et obtenir un résultat similaire. Cependant, grâce à UNION, les enregistrements semblent plus concis et plus clairs.
Il est également nécessaire de suivre certaines règles lors de l'écriture de requêtes combinées :
Une requête avec UNION supprime automatiquement toutes les lignes en double du jeu de résultats de la requête (en d'autres termes, se comporte comme une clause WHERE avec plusieurs conditions dans une seule instruction SELECT). C'est le comportement par défaut de l'opérateur UNION, mais nous pouvons le modifier si nous le souhaitons. Pour cela, nous devons utiliser l'opérateur UNION ALL au lieu de UNION.
Les résultats de l'instruction SELECT sont triés à l'aide de l'instruction ORDER BY. Lors de la combinaison de requêtes à l'aide de UNION, une seule clause ORDER BY peut être utilisée et elle doit être placée dans la dernière instruction SELECT. En effet, en pratique, cela n’a pas beaucoup de sens de trier une partie des résultats dans un ordre et l’autre partie dans un autre. Par conséquent, plusieurs phrases ORDER BY ne sont pas autorisées.