Page 32 - DCG - SQL - 2025
P. 32

FICHE 13 - Inclusion et exclusion : IN, NOT IN et



                                             alternative JOIN





           Le concept
        L’opérateur IN permet de tester si une valeur appartient à un ensemble. L’opérateur NOT IN teste qu’elle n’y
        appartient pas. Les deux peuvent être utilisés avec une sous-requête SQL-92.

          ATTENTION : NOT IN échoue silencieusement si la sous-requête retourne une valeur NULL. Dans ce cas, il


        est préférable d’utiliser LEFT JOIN avec IS NULL.




          ️ La syntaxe
               IN avec sous-requête :
                       SELECT champ

                       FROM table
                       WHERE champ IN (SELECT champ FROM autre_table WHERE condition)

               NOT IN avec sous-requête :
                       SELECT champ
                       FROM table
                       WHERE champ NOT IN (SELECT champ FROM autre_table WHERE condition)

               Alternative SQL-92 : LEFT JOIN + IS NULL :
                       SELECT A.champ

                       FROM A LEFT JOIN B ON A.champ = B.champ
                       WHERE B.champ IS NULL




           Exemple expliqué
        Afficher les clients ayant passé au moins une commande :
               SELECT NomClient
               FROM CLIENT
               WHERE NoClient IN (SELECT NoClient FROM COMMANDE)


        Afficher les clients n’ayant passé aucune commande (    sous-requête sans NULL) :
               SELECT NomClient
               FROM CLIENT
               WHERE NoClient NOT IN (SELECT NoClient FROM COMMANDE)


                                                             27
   27   28   29   30   31   32   33   34   35   36   37