Nous avons démontrer comment utiliser l’ordre select avec ses clauses : from, where, group by, having et group by. Dans cette partie , nous voulons découvrir une méthode très utile utilisée avec l’ordre select : les sous requêtes. 

Les sous requêtes : introduction

Soit la base de données relationnelle GestionVentes qui contient trois tables : Produit( (avec les informations concernant un produit : code, libellé, prix unitaire…), Client ( inclut les informations du client : code, nom, prénom, adresse,…) et la table Vente ( c’est la table qui stocke les informations concernant les ventes : code du produit vendu, code du client qui a acheté ce produit, quantité commandée, date de la commande,…)

Supposons, on veut afficher la liste des produits qui n’ont jamais été acheté. Pour pouvoir répondre à cette question il faut tester que notre produit ne correspond à aucune  ligne de la table vente. Ce qui n’est pas évident sans utiliser les sous requête.

Une sous-requête est une requête de sélection dont les résultats sont utilisés pour répondre à une autre requête.

Solution possible :

SELECT *

FROM PRODUIT

WHERE    codeP NOT IN ( Select DISTINCT codeP  From   VENTE)

Dans la clause where, nous avons utilisé l’opérateur not in puis une autre requête select (dite : sous requête). En effet, la requête : select distinct codeP from VENTE permet de lister les codes des produits vendus. D’où, les produits recherchés sont ceux qui existent dans la table produit (qui contient tous les produits) et qui ne sont pas dans la table vente (qui inclut juste les codes des produits vendus).

Sous requêtes : opérateurs à utiliser

Pour pouvoir utiliser les sous requêtes, on a recours à 4 Opérateurs principaux: IN, ALL, ANY, EXISTS

  • ALL : vérifie la condition pour toutes les valeurs de la sous requête.
  • ANY : vérifie si la condition est vraie pour au moins une valeur de la sous requête.
  • EXITS: vérifie si le résultat de la sous requête correspond à NULL ou pas.

Syntaxe:

SELECT         liste des attributs

FROM liste des tables

WHERE          Attr1 [>, <, >=, <=] ALL/ANY sous requête

Le choix de l’opérateur à utiliser dépend du besoin. Nous vous proposons une vidéo en Darija-Arabe-Maroc pour plus d’explications et plus exemples.

Vous pouvez suivre la liste des vidéos du cours base de données (Merise + Sql + Transact sql) sur notre chaine youtube : Vidéos Bases de données.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *