Bases des bases de données
Une table Client(IdClient, Nom) contient 4 lignes : (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). Une table Commande(IdCommande, IdClient, Montant) contient 5 lignes : (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Combien de lignes renvoie SELECT Nom FROM Client WHERE IdClient IN (SELECT IdClient FROM Commande WHERE Montant > 5000) ?
- A1 ligne
- B2 lignes
- C3 lignes
Afficher la réponse et l'explication
Réponse : B. 2 lignes
D'abord, la sous-requête entre parenthèses renvoie l'IdClient des commandes dont le montant dépasse 5000. Ce sont O2 (C2), O3 (C1) et O5 (C2) ; l'ensemble des valeurs IdClient est donc C2, C1, C2. La requête externe vérifie, pour chaque ligne de la table Client, si son IdClient figure dans cet ensemble. C'est le cas d'Aoki (C1) et d'Inoue (C2) ; bien qu'Inoue apparaisse 2 fois dans l'ensemble, il n'est renvoyé qu'une fois, comme une seule ligne de la table Client ; le résultat compte donc 2 lignes. 3 lignes correspond au cas où une ligne serait produite pour chaque commande correspondante, comme lorsqu'on joint les tables Client et Commande avant de filtrer sur le montant. 1 ligne correspond au décompte des seuls clients dont toutes les commandes dépassent 5000 (Inoue).
Continuer : 9 autres questions sur Bases des bases de données