iconeaccess.gif (2009 octets)

Ca sert à quoi, les requêtes UNION ?

Un exemple tout simple de requête UNION est la concaténation (mettre sensemble) de deux tables. Le résultat est surprenant...

Par exemple, vous avez deux tables :

Une table T_Client :

NomClient
Michel
André
Yves

et, d'autre part, sans relation aucune avec les clients, une table T_Ami :

NomAmi
Bernard
Saturnin
Noémie

et vous aimeriez obtenir le résultat suivant (tout le monde dans un seul tableau) :

ToutLeMonde
Michel
André
Yves
Bernard
Saturnin
Noémie

Pour celà, il va falloir utiliser une requête UNION... Le hic, c'est qu'une requête UNION ne PEUT PAS se représenter comme une requête simple ou on fait glisser les champs... il faut l'écrire en mode SQL... Comment faire...

Ce n'est pas si compliqué : Voici la marche à suivre.

- Vous créez une requête, toute simple, avec seulement la table T_Client. Vous glissez le champ NomClient
- Vous allez Dans Affichage/Mode SQL
Vous avez :

SELECT T_Client.NomClient
FROM T_Client;

Sélectionnez ce texte, et faites Edition/Copier

- Vous créez une deuxième requête, toute simple, avec seulement la table T_Ami. Vous glissez le champ NomAmi
- Vous allez Dans Affichage/Mode SQL
Vous avez :

SELECT T_Client.NomAmi
FROM T_Ami;

- Cliquez à la fin du texte
- Enlevez le ;
- Faites ENTER
- Faites Edition/Coller

Vous devriez alors abtenir ceci :

SELECT T_Client.NomClient
FROM T_Client
SELECT T_Client.NomAmi
FROM T_Ami;

Ajoutez UNION ici :

SELECT T_Client.NomClient
FROM T_Client
UNION
SELECT T_Client.NomAmi
FROM T_Ami;

Et voilà. Vous pouvez maintenant aller dans Affichage/Mode feuille de données, et vous avez le contenu des deux tables comme ceci :

NomClient
Michel
André
Yves
Bernard
Saturnin
Noémie

La requête UNION ne peut plus se représenter en mode création (normal). Vous pouvez seulement voir le mode SQL, ou les résultats de la requête.

Sauvegardez cette requête sous R_Union, et quittez-là : Voyez comme l'icône qui la représente est particulière....

Si nous avions un client et un ami qui possèdent le même prénom, seul un des deux sera affiché. Si vous désirez que les noms en double apparaissent 2 fois remplacez UNION par UNION ALL

A savoir : les champs de type Mémo, Objet OLE ou Lien hypertexte ne peuvent pas être insclus dans une requête UNION

Il est également possible d'empiler ainsi deux champs différents d'une même table :

SELECT T_Client.Prenom
FROM T_Client
UNION
SELECT T_Client.NomClient
FROM T_Client;