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 | +-----------+----------------+-------------+--------+----------------+
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 | +-----------+----------------+-------------+--------+----------------+
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 | +-----------+----------------+-------------+--------+----------------+
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 | +--------+----------------+-------------+-----------+----------------+
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 | +--------+----------------+-------------+-----------+----------------+
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 | +-----------+----------------+-------------+--------+----------------+
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 | +-----------+----------------+-------------+--------+----------------+
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 | +--------+----------------+-------------+-----------+----------------+
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 | +--------+----------------+-------------+-----------+----------------+
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 | +-----------+----------------+-------------+--------+----------------+
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 | +--------+----------------+-------------+-----------+----------------+
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 | +-----------+----------------+-------------+--------+----------------+
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 | +-----------+----------------+-------------+--------+----------------+