Leçon 2 / 9 — Chapitre 4: CTE et opérateurs ensemblistes
Le piège de l'ordre des colonnes dans un UNION
UNION fait correspondre les colonnes des deux requêtes par position, jamais par nom. Si les deux SELECT n'énumèrent pas leurs colonnes dans le même ordre, les valeurs se retrouvent mélangées sous les mauvais en-têtes — sans la moindre erreur, tant que les types restent compatibles.
SELECT nom, categorie FROM produits WHERE prix >= 500
UNION
SELECT categorie, nom FROM produits WHERE categorie = 'hygiene';
La première requête renvoie des paires (nom, categorie) : (Cahier, papeterie), (Jus, boisson), (Dentifrice, hygiene). La seconde, avec les colonnes inversées, renvoie des paires (categorie, nom) pour la catégorie hygiène : (hygiene, Savon), (hygiene, Dentifrice).
Le résultat final affiche ces deux séries sous les en-têtes de la première requête (nom, categorie) — la colonne nom du résultat contient donc, pour ces lignes-là, la valeur 'hygiene', et la colonne categorie contient 'Savon' ou 'Dentifrice'. Comme nom et categorie sont toutes deux du texte, aucune erreur ne se déclenche : le mélange passe silencieusement.
À retenir :
UNIONassocie les colonnes par position (1ʳᵉ avec 1ʳᵉ, 2ᵉ avec 2ᵉ...), jamais par nom d'en-tête.- Deux requêtes aux colonnes de même type mais dans un ordre différent s'exécutent sans erreur — et produisent un résultat sémantiquement faux.
- Toujours vérifier que l'ordre des colonnes énumérées dans le
SELECTest identique des deux côtés d'unUNION, pas seulement leur nombre et leur type.
À vous de jouer : corrigez la seconde requête ci-dessus pour qu'elle énumère ses colonnes dans le même ordre que la première (nom, categorie), et vérifiez que le résultat a de nouveau un sens.
Continuez ce module
Débloquez les leçons restantes ainsi que l'attestation finale.
7 500 XOF / 11,43 € / 12,46 $
Débloquez les 87 leçons restantes de ce module
Pour vous communiquer où envoyer le paiement.
Moyen de paiement souhaité
Nous vous contactons pour le paiement — activé dès réception.