Adloun

Jointures de base

Exercice · informatique (tronc commun des prépas scientifiques), chapitre 16 — SQL : jointures, agrégation et requêtes imbriquées

Énoncé

Écrire et exécuter les requêtes SQL retournant : (a) chaque titre avec le nom de son auteur, par année croissante ; (b) les titres empruntés par Alice (id_usager = 1) ; (c) les noms des usagers ayant emprunté un livre de Tolstoï.

Corrigé

-- (a) Chaque titre avec le nom de son auteur, par année croissante
SELECT titre, nom FROM livre
JOIN auteur ON livre.id_auteur = auteur.id_auteur ORDER BY annee;

-- (b) Les titres empruntés par Alice (id_usager = 1)
SELECT titre FROM emprunt
JOIN livre ON emprunt.id_livre = livre.id_livre
WHERE id_usager = 1;

-- (c) Les noms des usagers ayant emprunté un livre de Tolstoï
SELECT DISTINCT usager.nom FROM emprunt
JOIN usager ON emprunt.id_usager = usager.id_usager
JOIN livre  ON emprunt.id_livre  = livre.id_livre
WHERE livre.id_auteur = 3;

(a) Renvoie 8 lignes, allant d'Orgueil et préjugés () au Blé en herbe (). (b) Renvoie Vingt mille lieues sous les mers, Guerre et paix, Orgueil et préjugés. (c) Renvoie Alice et Emma (pour Guerre et paix), et Chloé (pour Anna Karénine). L'utilisation de DISTINCT est indispensable pour éviter d'afficher plusieurs fois le même usager si celui-ci a emprunté plusieurs ouvrages du même auteur. Conseil de méthode : Chaque jointure suit une flèche du schéma relationnel. Avant d'écrire, tracez le chemin entre les tables reliant les données disponibles aux résultats souhaités (ici : ). Une requête de jointure se planifie comme un itinéraire de graphe.

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.