10 Exercices Sur Les Requêtes SQL Corrigé: Requête sur plusieurs tables

La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec SQL. Nous espérons que ces exercices vous aideront à améliorer vos compétences en SQL. Les exercices corrigés suivantes sont actuellement disponibles, nous travaillons dur pour ajouter plus d’exercices. Bon apprentissage!

Vous pouvez lire notre tutoriel SQL avant de résoudre les exercices suivants.

 
 

Exercices Sur Les Requêtes SQL Corrigé : Requête sur plusieurs tables

1. A partir des tables suivantes, écrivez une requête SQL pour trouver les fournisseurs et les clients qui habitent dans la même ville. Renvoyez le nom du client, le nom du fournisseur et la ville du fournisseur.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
SELECT clients.nom_cl, fournisseurs.nom_fr, fournisseurs.ville
FROM fournisseurs, clients
WHERE fournisseurs.ville = clients.ville;

Sortie de la requête :

+----------------+--------------------+-------------+
|     nom_cl     |       nom_fr       |    ville    |
+----------------+--------------------+-------------+
| Alex Barbara   |  Fauna Gaillard    | Paris       |
| Karen Farley   |  Barry Cantin      | Nice        |
| Kevin Thompson |  Fauna Gaillard    | Paris       |
| Scott Henry    |  Fusberta Faure    | Marseille   |
| Ellen McMullen |  Ernest Petit      | Montpellier |
+----------------+--------------------+-------------+

 

2. A partir des table suivantes, écrivez une requête SQL pour trouver tous les clients et les fournisseurs qui travaillent pour eux. Renvoyez le nom du client et le le nom du fournisseur.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
SELECT clients.nom_cl, fournisseurs.nom_fr
FROM clients, fournisseurs
WHERE fournisseurs.fournisseur_id = clients.fournisseur_id;

Sortie de la requête :

+----------------+--------------------+
|     nom_cl     |       nom_fr       |
+----------------+--------------------+
| Alex Barbara   |  Arnaud Beaulac    |
| Lois Collins   |  Arnaud Beaulac    |
| Ellen McMullen |  Arnaud Beaulac    |
| Karen Farley   |  Fauna Gaillard    |
| Scott Henry    |  Royce Guimond     |
| Kevin Thompson |  Ernest Petit      |
+----------------+--------------------+

 

 
 
3. A partir des tables suivantes, écrivez une requête SQL pour trouver les fournisseurs qui ont généré des commandes pour leurs clients mais qui ne sont pas situés dans la même ville. Retournez cmd_id, nom_cl, client_id (table des commandes), fournisseur_id (table des commandes).

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
SELECT cmd_id, nom_cl, commandes.client_id, commandes.fournisseur_id
FROM fournisseurs, clients, commandes
WHERE clients.ville <> fournisseurs.ville
  AND commandes.client_id = clients.client_id
  AND commandes.fournisseur_id = fournisseurs.fournisseur_id;

Sortie de la requête :

+--------+----------------+-------------+----------------+
| cmd_id | nom_cl         | client_id   | fournisseur_id |
+--------+----------------+-------------+----------------+
| 8003   | Lois Collins   | 1002        | 6001           |
| 8001   | Karen Farley   | 1005        | 6002           |
| 8002   | Karen Farley   | 1005        | 6002           |
| 8004   | Kevin Thompson | 1006        | 6003           |
| 8005   | Kevin Thompson | 1006        | 6003           |
| 8006   | Ellen McMullen | 1003        | 6001           |
+--------+----------------+-------------+----------------+

 

4. A partir des tables suivantes, écrivez une requête SQL pour trouver les commandes effectuées par les clients. Retournez le numéro de la commande et le nom du client.

Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
SELECT commandes.cmd_id, clients.nom_cl
FROM commandes, clients
WHERE commandes.client_id = clients.client_id;

Sortie de la requête :

+--------+----------------+
| cmd_id | nom_cl         |
+--------+----------------+
| 8003   | Lois Collins   |
| 8001   | Karen Farley   |
| 8002   | Karen Farley   |
| 8004   | Kevin Thompson |
| 8005   | Kevin Thompson |
| 8006   | Ellen McMullen |
+--------+----------------+

 

 
 
5. À partir des tables suivantes, écrivez une requête SQL pour trouver les clients pour lesquels chaque client a un age spécifié et est servi par un fournisseur qui appartient à une ville. Renvoyez nom_cl, age et cmd_id.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure |             |  0.8       |
|      6003      | Ernest Petit   |             |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |        |      6006      |
|    1003   | Ellen McMullen | Montpellier |        |      6001      |
+-----------+----------------+-------------+--------+----------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
SELECT clients.nom_cl, clients.age, commandes.cmd_id
FROM commandes, fournisseurs, clients
WHERE commandes.client_id = clients.client_id
  AND commandes.fournisseur_id = clients.fournisseur_id
  AND fournisseurs.ville IS NOT NULL
  AND clients.age IS NOT NULL;

Sortie de la requête :

+----------------+--------+--------+
| nom_cl         | age    | cmd_id | 
+----------------+--------+--------+	
| Karen Farley   | 44     | 8001   |
| Karen Farley   | 44     | 8002   |
| Lois Collins   | 30     | 8003   |
+----------------+--------+--------+

 

6. À partir des tables suivantes, écrivez une requête SQL pour trouver les clients qui sont servis par un fournisseur et qui perçoivent une commission comprise entre 1 % et 6 % (les valeurs de début et de fin sont incluses). Retournez nom_client, ville, nom_fr, et commission.

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
SELECT clients.nom_cl, clients.ville, fournisseurs.nom_fr, fournisseurs.commission
FROM clients, fournisseurs
WHERE clients.fournisseur_id = fournisseurs.fournisseur_id
  AND fournisseurs.commission BETWEEN 0.1 AND 0.6;

Sortie de la requête :

+----------------+-------------+----------------+------------+
| nom_cl         | ville       | nom_fr         | commission |
+----------------+-------------+----------------+------------+
| Alex Barbara   | Paris       | Arnaud Beaulac | 0.2        |
| Lois Collins   | Lyon        | Arnaud Beaulac | 0.2        |
| Karen Farley   | Nice        | Fauna Gaillard | 0.5        |
| Kevin Thompson | Paris       | Ernest Petit   | 0.1        |
| Scott Henry    | Marseille   | Royce Guimond  | 0.6        |
| Ellen McMullen | Montpellier | Arnaud Beaulac | 0.2        |
+----------------+-------------+----------------+------------+

 

 
 
7. À partir des tables suivantes, écrivez une requête SQL pour trouver toutes les commandes exécutées par le fournisseur et commandées par le client dont l’age est supérieure ou égale à 50. Calculer montant_achat*commission. Renvoyez le nom du client, la commission et montant_achat*commission en tant que « Commission % ».

Table: fournisseurs

+----------------+----------------+-------------+------------+
| fournisseur_id |      nom_fr    |    ville    | commission |
+----------------+----------------+-------------+------------+
|      6001      | Arnaud Beaulac | Toulouse    |  0.2       |
|      6002      | Fauna Gaillard | Paris       |  0.5       |
|      6005      | Barry Cantin   | Nice        |  0.9       |
|      6006      | Royce Guimond  | Strasbourg  |  0.6       |
|      6007      | Fusberta Faure | Marseille   |  0.8       |
|      6003      | Ernest Petit   | Montpellier |  0.1       |
+----------------+----------------+-------------+------------+
Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
SELECT cmd_id, nom_cl, commission, montant_achat * commission AS "Commission %"
FROM fournisseurs, commandes, clients
WHERE commandes.client_id = clients.client_id
  AND commandes.fournisseur_id = fournisseurs.fournisseur_id
  AND clients.age >= 50;

Sortie de la requête :

+--------+----------------+------------+--------------+
| cmd_id | nom_cl         | commission | Commission % |
+--------+----------------+------------+--------------+
| 8006   | Ellen McMullen | 0.2        | 37.644       |
| 8004   | Kevin Thompson | 0.1        | 5.932        |
| 8005   | Kevin Thompson | 0.1        | 7.433        |
+--------+----------------+------------+--------------+

 

8. À partir du table suivante, écrivez une requête SQL pour trouver les clients qui ont passé des commandes le 5 janvier 2024. Retournez l’identifiant du client, le nom du client, la ville, l’age, l’identifiant du fournisseur, le numéro de commande, le montant de l’achat et la date de commande.

Table: clients

+-----------+----------------+-------------+--------+----------------+
| client_id |     nom_cl     |    ville    |  age   | fournisseur_id |
+-----------+----------------+-------------+--------+----------------+
|    1001   | Alex Barbara   | Paris       |  25    |      6001      |
|    1002   | Lois Collins   | Lyon        |  30    |      6001      |
|    1005   | Karen Farley   | Nice        |  44    |      6002      |
|    1006   | Kevin Thompson | Paris       |  65    |      6003      |
|    1007   | Scott Henry    | Marseille   |  32    |      6006      |
|    1003   | Ellen McMullen | Montpellier |  53    |      6001      |
+-----------+----------------+-------------+--------+----------------+
Table: commandes

+--------+----------------+-------------+-----------+----------------+
| cmd_id | montant_achat  |  date_cmd   | client_id | fournisseur_id |
+--------+----------------+-------------+-----------+----------------+
| 8001   | 125.02         | 2024-10-06  |  1005     |      6002      |
| 8002   | 60.38          | 2024-02-22  |  1005     |      6002      |
| 8003   | 95.65          | 2024-05-11  |  1002     |      6001      |
| 8004   | 59.32          | 2024-12-22  |  1006     |      6003      |
| 8005   | 74.33          | 2024-11-30  |  1006     |      6003      |
| 8006   | 188.22         | 2024-01-05  |  1003     |      6001      |
+--------+----------------+-------------+-----------+----------------+
SELECT *
FROM clients cl, commandes cm
WHERE cl.client_id = cm.client_id
  AND cm.date_cmd = '2024-01-05';

Sortie de la requête :

+-----------+----------------+-------------+-----+----------------+--------+
| client_id |  nom_cl        | ville       | age | fournisseur_id | cmd_id |
+-----------+----------------+-------------+-----+----------------+--------+
| 1003      | Ellen McMullen | Montpellier | 53  | 6001           | 8006   |
+-----------+----------------+-------------+-----+----------------+--------+

---------------+------------+
 montant_achat | date_cmd   |
---------------+------------+
 188.22        | 2024-01-05 |
---------------+------------+

 

 

Laisser un commentaire

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