[[01_ Détail sur les 6 mots clés d'une requête sélection]] # Requêtes sur une seule table Tout vous a été présenté dans le chapitre précédent. Ici, nous allons simplement appliquer les premières étapes d'une requête basée sur une seule table pour bien comprendre ce qu'il se passe. Cela nous permettra dans les prochains chapitres de pouvoir faire le lien quand il y a 2 ou plusieurs tables. ## Prenons comme exemple la table `Produits` : | id_produit | nom_produit | prix_unitaire | stock | categorie | | :--------- | :---------- | :------------ | :---- | :----------- | | 1 | Ordinateur | 1200.00 | 50 | Électronique | | 2 | Souris | 25.00 | 200 | Périphérique | | 3 | Clavier | 75.00 | 150 | Périphérique | | 4 | Écran | 300.00 | 80 | Électronique | | 5 | Routeur | 90.00 | NULL | Réseau | ## La demande initiale Supposons que vous souhaitiez afficher ***la liste des produits (juste le nom des produits dans l'ordre alphabétique) dont le prix est supérieur à 100 et le stock est inférieur à 100***. ## La requête répondant à la demande Nous aurions alors la requête suivante : ```sql > SELECT nom_produit > FROM Produits > WHERE prix_unitaire > 100 AND stock < 100 > ORDER BY nom_produit; ``` ## Exécution de la requête ### Avant de commencer 1- N'oubliez pas l'ordre d'exécution d'une requête ! 2- A chaque étape de la requête, Sachez toujours à quoi correspond un enregistrement >[!important] Pourquoi savoir à quoi correspond un enregistrement >- Comprendre ce que représentent les informations qui sortent d'une requête. > *Essentiel si nous nous servons de ces données pour faire d'autres requêtes.* >- Quand on fait des opérations d'agrégats, cela permet de s'assurer que les calculs sont bons. > *En particulier quand nous allons compter. Mais pas que !* ### Résultat après le `FROM` Dans le `FROM`, il n'y a qu'une table. Donc après son exécution, nous retrouvons les enregistrements de la table `Produits` : | id_produit | nom_produit | prix_unitaire | stock | categorie | | :--------- | :---------- | :------------ | :---- | :----------- | | 1 | Ordinateur | 1200.00 | 50 | Électronique | | 2 | Souris | 25.00 | 200 | Périphérique | | 3 | Clavier | 75.00 | 150 | Périphérique | | 4 | Écran | 300.00 | 80 | Électronique | | 5 | Routeur | 90.00 | NULL | Réseau | Ici, ***un enregistrement correspond à un enregistrement de la table `Produits` donc, par définition à un produit***. ### Résultat après le `WHERE` le `WHERE` contient les conditions : ```sql > prix_unitaire > 100 AND stock < 100 ``` Les enregistrements sortis du `FROM` qui ne correspondent pas aux critères du `WHERE` sont mis en rouge ci-dessous et vont disparaitre. | id_produit | nom_produit | prix_unitaire | stock | categorie | | :--------- | :---------- | :------------ | :---- | :----------- | | 1 | Ordinateur | 1200.00 | 50 | Électronique | | <em style="color:red;text-decoration: line-through;">2</em> | <em style="color:red;text-decoration: line-through;">Souris</em> | <em style="color:red;text-decoration: line-through;">25.00</em> | <em style="color:red;text-decoration: line-through;">200</em> | <em style="color:red;text-decoration: line-through;">Périphérique</em> | | <em style="color:red;text-decoration: line-through;">3</em> | <em style="color:red;text-decoration: line-through;">Clavier</em> | <em style="color:red;text-decoration: line-through;">75.00</em> | <em style="color:red;text-decoration: line-through;">150</em> | <em style="color:red;text-decoration: line-through;">Périphérique</em> | | 4 | Écran | 300.00 | 80 | Électronique | | <em style="color:red;text-decoration: line-through;">5</em> | <em style="color:red;text-decoration: line-through;">Routeur</em> | <em style="color:red;text-decoration: line-through;">90.00</em> | <em style="color:red;text-decoration: line-through;">NULL</em> | <em style="color:red;text-decoration: line-through;">Réseau</em> | après l'exécussion du `WHERE`, nous obtenons : | id_produit | nom_produit | prix_unitaire | stock | categorie | | :--------- | :---------- | :------------ | :---- | :----------- | | 1 | Ordinateur | 1200.00 | 50 | Électronique | | 4 | Écran | 300.00 | 80 | Électronique | Maintenant, *un enregistrement correspond à un produit* ***dont le prix unitaire est supérieur à 100 et le stock inférieur à 100***. ### Résultat après le `SELECT` Dans le `SELECT`, on demande à ne mettre que le champ `nom_produit`. Il reste donc : | nom_produit | | :---------- | | Ordinateur | | Écran | Un enregistrement correspond au ***nom d'*** *un produit dont le prix unitaire est supérieur à 100 et le stock inférieur à 100* ### Résultat après le `ORDER BY` Dans le `ORDER BY`, il y a le champ `nom_produit` sans précision c'est donc par ordre croissant. Cela donne : | nom_produit | | :---------- | | Écran | | Ordinateur | Cela ne change rien pour la définition d'un enregistrement qui correspond donc toujours au *nom d'un produit dont le prix unitaire est supérieur à 100 et le stock inférieur à 100* ***Ce résultat est celui qui sortira de ma requête.*** --- >[!important] Avant de continuer >Ces explications vous ont semblées certainement très simple. Pourtant, il faut être certains de bien les maitriser avant de continuer car nous allons : >1- ajouter la notions d'agrégation qui va provoquer des changements d'unité dans la représentation d'un enregistrement >2- nous allons travailler sur plusieurs tables, ce qui peut rendre plus complexe la définition d'un enregistrement Prochaine étape, faire des requêtes permettant d'analyser un ensemble d'enregistrements. : [[03_ Opérations entre les enregistrements]]