Opérateurs UNION / UNION ALL
Présentation
Les requêtes composées permettent de combiner des requêtes de sélection (instruction SELECT). Chaque requête de sélection doit porter sur des fichiers de structure identique.
Pour réaliser une requête composée, il est possible d'utiliser :
- l'opérateur UNION.
- l'opérateur UNION ALL.
Exemple : Réaliser une requête contenant les clients dont le nom commence par la lettre 'A' et les prospects habitant Londres. Pour réaliser cette requête, il est nécessaire de combiner les deux requêtes suivantes :
- sélection des clients dont le nom commence par la lettre 'A'.
- sélection des prospects habitant Londres.
Les enregistrements communs aux deux fichiers peuvent :
- soit apparaître une seule fois dans le résultat de la requête (opérateur UNION).
- soit apparaître deux fois dans le résultat de la requête (opérateur UNION ALL).
UNION
L'opérateur
UNION permet de combiner des requêtes de sélection portant sur des fichiers de structure identique. Les enregistrements communs apparaîtront
une seule fois dans le résultat de la requête.
Pour réaliser une requête composée avec l'opérateur UNION, chaque requête de sélection doit utiliser le même nombre de rubriques.
Le libellé des rubriques résultat correspond au libellé des rubriques de la première requête de sélection.
Format d'utilisation :
SELECT Rubrique1 [, Rubrique2]
FROM Fichier1 [, Fichier2]
[WHERE ...]
UNION
SELECT Rubrique1 [, Rubrique2]
FROM Fichier1 [, Fichier2]
[WHERE ...]
Exemple : Le code SQL suivant permet de sélectionner le nom des clients dont le nom commence par la lettre 'A' et le nom des prospects habitant Londres. Les personnes qui sont à la fois client et prospect, dont le nom commence par la lettre 'A' et habitant Londres n'apparaîtront qu'une seule fois dans le résultat de la requête.
SELECT NomClient
FROM CLIENT
WHERE NomClient LIKE 'A%'
UNION
SELECT NomProspect
FROM PROSPECT
WHERE VilleClient = 'Londres'
UNION ALL
L'opérateur
UNION ALL permet de combiner des requêtes de sélection portant sur des fichiers de structure identique. Les enregistrements communs apparaîtront
plusieurs fois dans le résultat de la requête.
Pour réaliser une requête composée avec l'opérateur UNION ALL, chaque requête de sélection doit utiliser le même nombre de rubriques.
Le libellé des rubriques résultat correspond au libellé des rubriques de la première requête de sélection.
Format d'utilisation :
SELECT Rubrique1 [, Rubrique2]
FROM Fichier1 [, Fichier2]
[WHERE ...]
UNION ALL
SELECT Rubrique1 [, Rubrique2]
FROM Fichier1 [, Fichier2]
[WHERE ...]
Exemple : Le code SQL suivant permet de sélectionner le nom des clients dont le nom commence par la lettre 'A' et le nom des prospects habitant Londres. Les personnes qui sont à la fois client et prospect, dont le nom commence par la lettre 'A' et habitant Londres apparaîtront deux fois dans le résultat de la requête.
SELECT NomClient
FROM CLIENT
WHERE NomClient LIKE 'A%'
UNION ALL
SELECT NomProspect
FROM PROSPECT
WHERE VilleClient = 'Londres'
Union de requêtes paramétrées : gestion des paramètres
Lors de la création d'une requête composée (UNION), chaque requête possède ses propres paramètres. Par exemple :
- maRequete1.sparam1
- maRequete2.sparam2
- maRequeteUnion est la requête UNION de marequete1 et maRequete2.
A l'exécution, la requête Union et les requêtes ayant servi à construire la requête Union sont distinctes.
Ainsi, dans notre exemple, "maRequete1.sparam1" initialise le paramètre pour la requête maRequete1 mais pas le paramètre sParam1 de la requête Union.
Pour obtenir le bon résultat il faut donc obligatoirement initialiser maRequeteUnion.sparam1 pour initialiser le paramètre 1 de la requête Union.