Page 34 - DCG - SQL - 2025
P. 34

   Exercice

          CONTEXTE



               Une  maison  d’édition  numérique  gère  un  catalogue  de  livres,  des  auteurs,  des  lecteurs  et  des
               téléchargements. Certains auteurs sont peu lus, certains livres ne sont jamais téléchargés, et certains
               lecteurs n’ont encore rien acheté. L’équipe éditoriale souhaite croiser ces données pour détecter les
               absences ou les exclusions.


          SCHÉMA RELATIONNEL




               AUTEUR (NoAuteur, NomAuteur)
               LIVRE (RefLivre, Titre, Categorie, #NoAuteur)
               LECTEUR (NoLecteur, NomLecteur)
               TELECHARGEMENT (#NoLecteur, #RefLivre, DateTelechargement)

               AVIS (#NoLecteur, #RefLivre, Note, Commentaire)



          REQUÊTES AVEC IN (avec sous-requête)



               1.  Afficher les noms des lecteurs ayant téléchargé au moins un livre.
               2.  Afficher les titres des livres qui ont reçu au moins un avis.
               3.  Afficher les noms des auteurs dont au moins un livre a été téléchargé.






          REQUÊTES COMPARATIVES NOT IN / LEFT JOIN (5 requêtes)
        Instruction : Formuler la requête en utilisant d’abord NOT IN, puis la réécrire avec LEFT JOIN + IS NULL.
               4.  Afficher les noms des lecteurs n’ayant jamais téléchargé de livre.
               5.  Afficher les titres des livres n’ayant reçu aucun avis.
               6.  Afficher les noms des auteurs dont aucun livre n’a été téléchargé.
               7.  Afficher les livres jamais téléchargés par le lecteur numéro 5.
               8.  Afficher les lecteurs n’ayant jamais noté le livre "Le pouvoir des nombres".









          MÉMO – Comment repérer les cas où NOT IN ou LEFT JOIN sont nécessaires ?


            •  La requête contient une négation implicite : n’ayant jamais…, sans…, n’ayant pas fait…
            •  On cherche ce qui est absent d’une relation, malgré une possibilité logique de lien
            •  Si la phrase peut se lire comme : “telle entité n’est pas dans la liste de celles qui ont fait telle action”,
               vous êtes probablement dans un cas de NOT IN ou LEFT JOIN IS NULL



                                                             29
   29   30   31   32   33   34   35   36   37   38   39