Chapitre 21 : les opérations ensemblistes en SQL
Le langage SQL permet de réaliser sur un groupe de deux tables les trois
opérations de base de la théorie des ensembles, c'est à dire :
De ces trois opérations, seule l'union présente vraiment de l'intérêt. Si, dans les
exposés relatifs à SQL, on regroupe généralement les trois opérations
ensemblistes, c'est pour se conformer à une logique mathématicienne. Comme
nous le verrons dans la suite de ce chapitre, l'intersection et la différence sont en
fait des requêtes multi-tables particulières, que l'on peut réaliser même si l'on ne
dispose pas d'une commande spécifique -- ce qui est effectivement le cas
lorsqu'on utilise le SGBD Access.
La requête union, par contre, est quasi irremplaçable : elle seule permet de mettre
deux tables bout à bout en leur faisant jouer des rôles identiques, et en éliminant
systématiquement les doublons. Certes, la requête ajout permet d'ajouter une
table à une autre, mais dans ce cas les deux tables ne jouent pas le même rôle, et
l'élimination des doublons -- si elle s'avère nécessaire -- requiert soit la création
d'un index multi-champ, soit un traitement ultérieur (regroupement).
A ce chapitre nous rajouterons un paragraphe concernant le produit cartésien de
deux tables, requête qui n'est utilisée que très rarement et dans des cas très
spécifiques.
Comme pour les autres chapitres de ce tutoriel (ou tutorial, ou cours en ligne),
nous utiliserons le SGBD Access comme support pratique.
2 - L'union de deux tables
L'union de deux tables est une une feuille de données (ou une table) contenant
chaque ligne de la première table et chaque ligne de la seconde table. Les lignes
communes aux deux tables ne sont conservées qu'en un seul exemplaire, c'est à
dire que l'opération d'union élimine les doublons. Les champs que l'on fait
correspondre dans les deux tables n'ont pas besoin de porter les mêmes noms ni
de se présenter dans le même ordre -- ni même de posséder le même type de
donnée si la transposition est possible (une date en texte, par exemple).
Exemple 1. La figure ci-dessous illustre l'opération d'union dans le cas simple où
les champs portent le même nom, possèdent les mêmes propriétés, et sont situés
dans le même ordre.
Il n'existe pas dans Access d'interface graphique permettant de créer une requête
Union. Il faut donc écrire soi-même le code SQL requis. Pour ouvrir l'éditeur de
requêtes SQL, nous sélectionnons l'objet "Requêtes" dans la fenêtre "Base de