Jointures : profil des emprunteurs et détection des inactifs
Double jointure : qui emprunte des BD ?
Section titled “Double jointure : qui emprunte des BD ?”La catégorie BD s’est démarquée dans la leçon précédente. Pour dresser le profil de ses emprunteurs, il faut chaîner deux jointures à travers les trois tables : emprunts → documents (pour filtrer sur la catégorie) et emprunts → adherents (pour connaître qui a emprunté).
query(""" SELECT a.prenom, a.nom, a.ville, COUNT(*) AS nb_bd FROM emprunts e JOIN documents d ON d.id = e.document_id JOIN adherents a ON a.id = e.adherent_id WHERE d.categorie = 'bd' GROUP BY a.id ORDER BY nb_bd DESC""") prenom nom ville nb_bd0 Amelie Rousseau Nantes 21 Nora Benali Nantes 12 Sarah Lemoine Nantes 13 Thomas Girard Rennes 14 Youssef Amrani Nantes 15 Chloe Petit Rennes 16 Karim Belkacem Nantes 1INNER JOIN (souvent écrit simplement JOIN) ne garde que les lignes qui trouvent une correspondance dans les deux tables. C’est le bon choix ici : on ne s’intéresse qu’aux adhérents ayant réellement emprunté une BD.
LEFT JOIN : repérer ce qui n’existe pas
Section titled “LEFT JOIN : repérer ce qui n’existe pas”La question inverse — quels adhérents inscrits n’ont jamais emprunté ? — ne peut pas se résoudre avec un INNER JOIN, puisque justement, aucune ligne d’emprunt ne correspond à ces adhérents. Il faut un LEFT JOIN, qui conserve toutes les lignes de la table de gauche même sans correspondance, puis un test IS NULL pour isoler les cas où la jointure n’a rien trouvé :
query(""" SELECT a.prenom, a.nom FROM adherents a LEFT JOIN emprunts e ON e.adherent_id = a.id WHERE e.id IS NULL""") prenom nom0 Hugo Bernard1 Paul Simon2 Victor LefebvreCe motif — LEFT JOIN + WHERE ... IS NULL — porte un nom : une anti-jointure. C’est la façon standard en SQL de répondre à une question du type « quels éléments de A n’ont aucune correspondance dans B ». On le retrouvera par exemple dans le module Séries temporelles pour repérer des jours sans aucune vente enregistrée.
Ces trois adhérents (Hugo, Paul, Victor) sont inscrits mais n’ont jamais emprunté : ce sont eux qu’il faudrait recontacter en priorité, plutôt que d’inviter uniquement les habitués à une soirée qui ne leur apprendra rien de nouveau.
Prochaine étape
Section titled “Prochaine étape”👉 Synthèse : identifier les adhérents fidèles et restituer la recommandation
Junior TSAFACK – 12/09/2026