Contenu du cours
SQL Intermédiaire
SQL Intermédiaire
Clause Union
Nous avons attiré l'attention d'un client qui a besoin de requêtes SQL. Avant de plonger dans les JOINs
, apprenons la clause UNION
, qui est essentielle pour combiner plusieurs tables.
Voici quelques points importants à connaître lors de l'utilisation de UNION
:
-
Nombre et ordre des colonnes : Toutes les requêtes combinées avec
UNION
doivent comporter le même nombre de colonnes dans le même ordre; -
Types de données : Les colonnes de chaque requête doivent avoir des types de données compatibles;
-
Lignes uniques : Par défaut,
UNION
supprime les lignes en double. UtilisezUNION ALL
si vous souhaitez conserver les doublons.
Pour une meilleure compréhension de la manière de combiner correctement les tables en utilisant la clause UNION
, j'ai introduit une table supplémentaire qui contient des informations sur les contractors
.
Il n'y a pas beaucoup d'informations ici, juste le first_name
, le last_name
et l'email
.
Vous pouvez voir que ce tableau présente des similitudes avec la table employees
. En utilisant la clause UNION
, nous pouvons combiner ces deux tables pour, par exemple, voir une liste de tous les prénoms et noms de famille des employés et des contractuels impliqués dans l'entreprise.
Pour ce faire, nous utiliserons la clause UNION
:
(SELECT employee_id as id, first_name, last_name FROM employees) UNION (SELECT contractor_id as id, first_name, last_name FROM contractors) ORDER BY id
Analysons ce qui se passe :
Nous avons deux requêtes qui retournent chacune trois colonnes avec les mêmes types de données. Nous voulons afficher le Id
, le first_name
et le last_name
de tous les membres de l'entreprise. Nous avons également renommé la colonne Id
afin que les deux requêtes aient les mêmes noms de colonnes.
Ensuite, nous utilisons UNION
pour combiner les résultats de ces requêtes, en supprimant les doublons (bien qu'il n'y en ait aucun ici).
Enfin, nous trions les résultats par Id
en utilisant ORDER BY
.
Remarque
Nous trions par
Id
, qui est une colonne commune dans les deux tables.
Après avoir utilisé UNION
, nous obtenons une seule grande requête que nous pouvons manipuler davantage avec des clauses comme ORDER BY
.
Nous ne pouvons pas utiliser directement WHERE
ou GROUP BY
avec des tables combinées en utilisant UNION
. Pour appliquer ces clauses, nous devons utiliser une sous-requête dans la section FROM
. Voici un exemple de comment procéder :
SELECT id, first_name, last_name FROM ( SELECT employee_id AS id, first_name, last_name FROM employees UNION SELECT contractor_id AS id, first_name, last_name FROM contractors ) AS combined WHERE first_name = 'Jane'
L'utilisation d'une sous-requête dans la section FROM
offre une plus grande flexibilité ! Cela peut sembler compliqué au début, mais maîtriser cette technique rendra l'écriture de requêtes complexes beaucoup plus facile.
1. Quelles colonnes sont requises lors de l'utilisation de la clause UNION
en SQL ?
2. Comment la clause UNION
traite-t-elle les lignes dupliquées par défaut ?
Merci pour vos commentaires !