13 Exercices Sur Les Requêtes SQL Corrigé: Jointure

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é : Jointure

1. A partir des tables suivantes, écrivez une requête SQL pour trouver le(s) fournisseur(s) et le(s) client(s) qu’il(s) représente(nt). Retourner le nom du client, la ville, le fournisseur, la 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 c.nom_cl AS "Nom du client", 
       c.ville, 
       f.nom_fr AS "Nom du fournisseur", 
       f.commission 
FROM clients c 
INNER JOIN fournisseurs f
ON c.fournisseur_id = f.fournisseur_id;

Sortie de la requête :

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

 

2. À partir des tables suivantes, écrivez une requête SQL pour trouver les fournisseurs qui ont reçu des commissions de plus de 5%. Retourne Nom du client, ville du client, Nom du fournisseur, 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 c.nom_cl AS "Nom du client", 
       c.ville, 
       f.nom_fr AS "Nom du fournisseur", 
       f.commission 
FROM clients c 
INNER JOIN fournisseurs f
ON c.fournisseur_id = f.fournisseur_id
WHERE f.commission > 0.5;

Sortie de la requête :

+----------------+-------------+---------------------+------------+
| Nom du client  |  ville      |  Nom du fournisseur | commission |
+----------------+-------------+---------------------+------------+
| Scott Henry    | Marseille   | Royce Guimond       | 0.6        |
+----------------+-------------+---------------------+------------+

 

 
 
3. A partir des tables suivantes, écrivez une requête SQL pour trouver les fournisseurs qui n’habitent pas dans la même ville que leurs clients et qui ont reçu une commission de plus de 5%. Retournez Nom du client, ville du client, Nom du fournisseur, ville du fournisseur, 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 c.nom_cl AS "Nom du client", 
       c.ville, 
       f.nom_fr AS "Nom du fournisseur", 
       f.ville, f.commission 
FROM clients c 
INNER JOIN fournisseurs f
ON c.fournisseur_id = f.fournisseur_id
WHERE f.commission > 0.5
AND c.ville <> f.ville;

Sortie de la requête :

+----------------+-------------+---------------------+------------+
| Nom du client  |  ville      |  Nom du fournisseur | commission |
+----------------+-------------+---------------------+------------+
| Scott Henry    | Marseille   | Royce Guimond       | 0.6        |
+----------------+-------------+---------------------+------------+

 

4. A partir des tables suivantes, écrivez une requête SQL pour trouver les détails d’une commande. Retournez cmd_id, date_cmd, montant_achat, nom du client, age, nom du fournisseur, 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 cm.cmd_id, cm.date_cmd, cm.montant_achat,
       cl.nom_cl AS "Nom du client", cl.age, 
       f.nom_fr AS "Nom du fournisseur", f.commission 
FROM commandes cm 
INNER JOIN clients cl 
ON cm.client_id = cl.client_id
INNER JOIN fournisseurs f
ON cm.fournisseur_id = f.fournisseur_id;

Sortie de la requête :

+--------+------------+---------------+---------------+-----+-------------------+
| cmd_id | date_cmd   | montant_achat | Nom du client | age | Nom du fournisseur|
+--------+------------+---------------+---------------+-----+-------------------+
| 8003   | 2024-05-11 | 95.65         | Lois Collins  | 30  | Arnaud Beaulac    |
| 8006   | 2024-01-05 | 188.22        | Ellen McMullen| 53  | Arnaud Beaulac    |
| 8001   | 2024-10-06 | 125.02        | Karen Farley  | 44  | Fauna Gaillard    |
| 8002   | 2024-02-22 | 60.38         | Karen Farley  | 44  | Fauna Gaillard    |
| 8004   | 2024-12-22 | 59.32         | Kevin Thompson| 65  | Ernest Petit      |
| 8005   | 2024-11-30 | 74.33         | Kevin Thompson| 65  | Ernest Petit      |
+--------+------------+---------------+---------------+-----+-------------------+

------------+
 commission |
------------+
 0.2        |
 0.2        |
 0.5        |
 0.5        |
 0.1        |
 0.1        |
------------+

 

 
 
5. A partir des tables suivantes, écrivez une requête SQL pour joindre les tables fournisseurs, clients et commandes de sorte que la même colonne de chaque table apparaisse une fois et que seules les lignes relationnelles soient renvoyées.

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 * 
FROM commandes
NATURAL JOIN clients
NATURAL JOIN fournisseurs;

 

6. À partir des tables suivantes, écrivez une requête SQL pour afficher le nom du client, la ville du client, l’age, le nom du fournisseur, la ville du fournisseur. Les résultats doivent être triés par ID de client croissant.

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 c.nom_cl AS "Nom du client", c.ville, c.age, 
       f.nom_fr AS "Nom du fournisseur", f.ville
FROM clients c
LEFT JOIN fournisseurs f
ON c.fournisseur_id = f.fournisseur_id
ORDER BY c.client_id;

Sortie de la requête :

+----------------+------------+-----+-------------------+------------+
| Nom du client  | ville      | age | Nom du fournisseur| ville      | 
+----------------+------------+-----+-------------------+------------+
| Alex Barbara   | Paris      | 25  | Arnaud Beaulac    | Toulouse   |
| Lois Collins   | Lyon       | 30  | Arnaud Beaulac    | Toulouse   |
| Ellen McMullen | Montpellier| 53  | Arnaud Beaulac    | Toulouse   |
| Karen Farley   | Nice       | 44  | Fauna Gaillard    | Paris      |
| Kevin Thompson | Paris      | 65  | Ernest Petit      | Montpellier|
| Scott Henry    | Marseille  | 32  | Royce Guimond     | Strasbourg |
+----------------+------------+-----+-------------------+------------+

 

 
 
7. A partir des tables suivantes, écrivez une requête SQL pour trouver les clients dont l’age est inférieure à 40. Retournez le nom du client, la ville du client, l’age, le nom du fournisseur, la ville du fournisseur. Le résultat doit être classé par ordre croissant en fonction de l’identifiant du client.

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 c.nom_cl AS "Nom du client", c.ville, c.age, 
       f.nom_fr AS "Nom du fournisseur", f.ville
FROM clients c
LEFT OUTER JOIN fournisseurs f
ON c.fournisseur_id = f.fournisseur_id
WHERE c.age < 40
ORDER BY c.client_id;

Sortie de la requête :

+----------------+------------+-----+-------------------+------------+
| Nom du client  | ville      | age | Nom du fournisseur| ville      | 
+----------------+------------+-----+-------------------+------------+
| Alex Barbara   | Paris      | 25  | Arnaud Beaulac    | Toulouse   |
| Lois Collins   | Lyon       | 30  | Arnaud Beaulac    | Toulouse   |
| Scott Henry    | Marseille  | 32  | Royce Guimond     | Strasbourg |
+----------------+------------+-----+-------------------+------------+

 

8. Écrire une instruction SQL pour créer un rapport avec le nom du client, la ville, le numéro de commande, la date de la commande et le montant de la commande par ordre croissant en fonction de la date de la commande afin de déterminer si l'un des clients existants a passé une commande ou non.

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 cl.nom_cl, cl.ville, cm.cmd_id,
       cm.date_cmd, cm.montant_achat
FROM clients cl 
LEFT OUTER JOIN commandes cm 
ON cl.client_id = cm.client_id 
ORDER BY cm.date_cmd;

Sortie de la requête :

+----------------+-------------+--------+------------+---------------+
| nom_cl         | ville       | cmd_id | date_cmd   | montant_achat |
+----------------+-------------+--------+------------+---------------+
| Alex Barbara   | Paris       | NULL   | NULL       | NULL          |
| Scott Henry    | Marseille   | NULL   | NULL       | NULL          |
| Ellen McMullen | Montpellier | 8006   | 2024-01-05 | 188.22        |
| Karen Farley   | Nice        | 8002   | 2024-02-22 | 60.38         |
| Lois Collins   | Lyon        | 8003   | 2024-05-11 | 95.65         |
| Karen Farley   | Nice        | 8001   | 2024-10-06 | 125.02        |
| Kevin Thompson | Paris       | 8005   | 2024-11-30 | 74.33         |
| Kevin Thompson | Paris       | 8004   | 2024-12-22 | 59.32         |
+----------------+-------------+--------+------------+---------------+

 

 
 
9. Écrire une instruction SQL pour créer un rapport avec le nom du client, la ville, le numéro de commande, la date de la commande, le montant de la commande, le nom du fournisseur et la commission pour déterminer si l'un des clients existants n'a pas passé de commande ou s'il a passé des commandes par l'intermédiaire de son fournisseur ou par lui-même.

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 cl.nom_cl, cl.ville, cm.cmd_id,
       cm.date_cmd, cm.montant_achat,
       f.nom_fr, f.commission 
FROM clients cl 
LEFT OUTER JOIN commandes cm 
ON cl.client_id = cm.client_id 
LEFT OUTER JOIN fournisseurs f 
ON f.fournisseur_id = f.fournisseur_id;

Sortie de la requête :
 

 

10. Écrivez une instruction SQL pour générer une liste par ordre croissant des fournisseurs qui travaillent pour un ou plusieurs clients ou qui n'ont pas encore rejoint l'un de ces clients.

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 c.nom_cl AS "Nom du client", c.ville, c.age, 
       f.nom_fr AS "Nom du fournisseur", f.ville
FROM clients c
RIGHT OUTER JOIN fournisseurs f
ON c.fournisseur_id = f.fournisseur_id
ORDER BY f.fournisseur_id; 

Sortie de la requête :
 

 

11. A partir des tables suivantes, écrivez une requête SQL pour lister tous les fournisseurs avec le nom du client, la ville, l'age, le numéro de commande, la date et le montant.

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 cl.nom_cl AS "Nom du client", cl.ville, cl.age, 
       f.nom_fr AS "Nom du fournisseur", 
       cm.cmd_id, cm.date_cmd, cm.montant_achat
FROM clients cl 
RIGHT OUTER JOIN fournisseurs f 
ON f.fournisseur_id = cl.fournisseur_id
RIGHT OUTER JOIN commandes cm 
ON cm.client_id = cl.client_id;

Sortie de la requête :
 

 

 
 
12. Écrivez une requête SQL pour combiner chaque ligne de la table fournisseur avec chaque ligne de la table client.

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 * 
FROM fournisseurs f 
CROSS JOIN clients c;

Sortie de la requête :
 

 

13. Écrivez une instruction SQL pour créer un produit cartésien entre le fournisseur et le client, c'est-à-dire que chaque fournisseur apparaîtra pour tous les clients et vice versa pour le fournisseur qui appartient à une ville donnée.

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 * 
FROM fournisseurs f 
CROSS JOIN clients c
WHERE f.ville IS NOT NULL;

Sortie de la requête :
 

 

 

Laisser un commentaire

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