Union de plusieurs requêtes
Toujours dans l'optique de rassembler plusieurs requêtes en une seule, voici l'UNION.
Faire l'union de deux requêtes, cela veut simplement dire réunir les résultats de la première requête et les résultats de la seconde
requête.
Voyons comment ça fonctionne !
Syntaxe
La syntaxe d'UNION est simplissime : vous avez deux requêtes SELECT dont vous voulez additionner les résultats ; il vous
suffit d'ajouter UNION entre ces deux requêtes.
Code : SQL
SELECT ...
UNION
SELECT ...
Le nombre de requêtes qu'il est possible d'unir est illimité. Si vous avez cinquante requêtes de sélection, placez un UNION entre
les cinquante requêtes.
Code : SQL
SELECT ...
UNION
SELECT ...
UNION
SELECT ...
....
UNION
SELECT ...
Par exemple, vous pouvez obtenir les chiens et les tortues de la manière suivante :
Code : SQL
SELECT Animal.* FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Chat'
UNION
SELECT Animal.* FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Tortue d''Hermann';
Cette requête peut bien sûr être écrite sans UNION, en faisant tout simplement un seul SELECT avec WHERE
Espece.nom_courant = 'Chat' OR Espece.nom_courant = 'Tortue d''Hermann'. Il ne s'agit
ici que d'un exemple destiné à illustrer la syntaxe. Nous verrons plus loin des exemples de cas où UNION est
indispensable.
Les règles
Bien sûr, ce n'est pas si simple que ça, il faut respecter certaines contraintes.
Nombre de colonnes
Il est absolument indispensable que toutes les requêtes unies renvoient le même nombre de colonnes.
Dans la requête que l'on a écrite ci-dessus, aucun problème puisque l'on sélectionne Animal.* dans les deux requêtes. Mais il ne
serait donc pas possible de sélectionner un nombre de colonnes différent dans chaque requête intermédiaire.
Par exemple, la requête ci-dessous renverra une erreur :
Partie 2 : Index, jointures et sous-requêtes
129/414
www.openclassrooms.com
Toujours dans l'optique de rassembler plusieurs requêtes en une seule, voici l'UNION.
Faire l'union de deux requêtes, cela veut simplement dire réunir les résultats de la première requête et les résultats de la seconde
requête.
Voyons comment ça fonctionne !
Syntaxe
La syntaxe d'UNION est simplissime : vous avez deux requêtes SELECT dont vous voulez additionner les résultats ; il vous
suffit d'ajouter UNION entre ces deux requêtes.
Code : SQL
SELECT ...
UNION
SELECT ...
Le nombre de requêtes qu'il est possible d'unir est illimité. Si vous avez cinquante requêtes de sélection, placez un UNION entre
les cinquante requêtes.
Code : SQL
SELECT ...
UNION
SELECT ...
UNION
SELECT ...
....
UNION
SELECT ...
Par exemple, vous pouvez obtenir les chiens et les tortues de la manière suivante :
Code : SQL
SELECT Animal.* FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Chat'
UNION
SELECT Animal.* FROM Animal
INNER JOIN Espece ON Animal.espece_id = Espece.id
WHERE Espece.nom_courant = 'Tortue d''Hermann';
Cette requête peut bien sûr être écrite sans UNION, en faisant tout simplement un seul SELECT avec WHERE
Espece.nom_courant = 'Chat' OR Espece.nom_courant = 'Tortue d''Hermann'. Il ne s'agit
ici que d'un exemple destiné à illustrer la syntaxe. Nous verrons plus loin des exemples de cas où UNION est
indispensable.
Les règles
Bien sûr, ce n'est pas si simple que ça, il faut respecter certaines contraintes.
Nombre de colonnes
Il est absolument indispensable que toutes les requêtes unies renvoient le même nombre de colonnes.
Dans la requête que l'on a écrite ci-dessus, aucun problème puisque l'on sélectionne Animal.* dans les deux requêtes. Mais il ne
serait donc pas possible de sélectionner un nombre de colonnes différent dans chaque requête intermédiaire.
Par exemple, la requête ci-dessous renverra une erreur :
Partie 2 : Index, jointures et sous-requêtes
129/414
www.openclassrooms.com
