Autojointures
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 16 — SQL : jointures, agrégation et requêtes imbriquées
Énoncé
Rédiger les requêtes SQL retournant : (a) les paires de livres différents écrits par un même auteur ; (b) les paires d'usagers habitant la même ville ; (c) les couples de livres parus la même année mais écrits par des auteurs différents.
Corrigé
-- (a) Paires de livres d'un même auteur
SELECT l1.titre, l2.titre FROM livre AS l1
JOIN livre AS l2 ON l1.id_auteur = l2.id_auteur
WHERE l1.id_livre < l2.id_livre;
-- (b) Paires d'usagers habitant la même ville
SELECT u1.nom, u2.nom FROM usager AS u1
JOIN usager AS u2 ON u1.ville = u2.ville
WHERE u1.id_usager < u2.id_usager;
-- (c) Livres parus la même année mais écrits par des auteurs différents
SELECT l1.titre, l2.titre, l1.annee FROM livre AS l1
JOIN livre AS l2 ON l1.annee = l2.annee
WHERE l1.id_auteur <> l2.id_auteur AND l1.id_livre < l2.id_livre;
Dans chaque cas, la condition id1 < id2 évite de renvoyer l'association d'un élément avec lui-même et limite le résultat aux paires non ordonnées (excluant les doublons de permutation).
- (a) Renvoie 5 paires (3 chez Jules Verne, 1 chez Léon Tolstoï et 1 chez Colette).
- (b) Identifie les binômes Alice–Chloé (Lyon), Bruno–Emma (Paris) et David–Farid (Nantes).
- (c) Renvoie un résultat vide, indiquant qu'aucun livre d'auteurs distincts n'a été publié la même année dans cette base de données.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.