Dans cette section, vous trouverez des ressources sur les cours que j'enseigne à savoir de la documentation, du code, des vidéos etc. Dès que je trouve quelque chose d'intéressant à partager, je le mettrai à disposition ici pour mes étudiants.
Travaux dirigés 9
##Auteur : Enseignant ##École : Collège Marie Victorin ##Session : Hiver 2026 ##Titre du cours : Introduction aux bases de données ##Titre du programme : Travaux dirigés 9 ##Version : 1.0 ##Date : 00/00/2026 ##Langage et version : SQL ##Moteur : SQL Server Express
-- Les requêtes sélection dans le langage SQL -- Objectif : -- Ce travail dirigé portera sur la création de requêtes sélection multitables avec des jointures -- ============================================================================================== -- *************************************************************************** -- Vérifications à faire systématiquement AVANT d'écrire les requêtes -- Vérifier la structure de la table à utiliser, c'est à dire : -- Le nom de la table -- Le nom des colonnes -- Le type des colonnes -- Les données contenues dans la table -- Base de données : Xtremefr -- En utilisant la base de données Xtreme créer les requêtes qui correspondent aux énoncés suivants. -- Cette série d'exercices couvre toutes les notions vues dans les cours précédents à savoir : -- les clauses : DISTINCT, TOP n, WHERE, GROUP BY, HAVING, ORDER BY, INNER JOIN -- Requete 1 /* =================================================================================================== Manipulation des noms de clients ******************************** Demande du client : Pour des étiquettes, j'ai besoin des 3 premières lettres du nom du client en majuscule, suivies de '...'. */ -- Votre code ici SELECT [Nom du client], CONCAT(UPPER(LEFT([Nom du client], 3)), '...') AS Etiquette FROM [Clients];
-- ---------
-- Requete 2
/* ===================================================================================================
Formatage des prix pour affichage
*********************************
Demande du client : Liste de produits
Je veux afficher les prix des produits sous la forme : 'Produit : [Nom] coûte [Prix] $'. Assurez-vous que le prix n'a pas trop de décimales."
*/
-- Votre code ici
SELECT
CONCAT('Produit : ', [Nom du produit], ' coûte ', CAST(ROUND([Prix conseillé], 2) AS VARCHAR), ' $') AS AffichagePrix
FROM [Produits];
-- --------- /* =================================================================================================== Requete 3 Annuaire des employés ********************* Demande du client : Pour l'annuaire interne, j'ai besoin de la liste de tous les employés. Affichez leur nom complet en majuscules (PRÉNOM NOM) et leur date d'embauche. */ -- Votre code ici SELECT UPPER(CONCAT(e.[Prénom], ' ', e.[Nom])) AS NomComplet, e.[Date d'embauche] FROM [Employés] e;
-- --------- /* =================================================================================================== Requete 4 Employés sans responsable ************************* Demande du client : Qui sont les employés qui n'ont pas de supérieur hiérarchique indiqué dans le système ? */ -- Votre code ici SELECT [Nom], [Prénom] FROM [Employés] WHERE [ID supérieur] IS NULL OR [ID supérieur] = '';
-- ---------- /* =================================================================================================== Requete 5 Commandes récentes (6 derniers mois) ************************************ Demande du client : Montrez-moi toutes les commandes passées au cours des 6 derniers mois à partir d'aujourd'hui. ====================================================================================================*/ -- Votre code ici SELECT [ID commande], [Date de commande] FROM [Commandes] WHERE [Date de commande] >= DATEADD(MONTH, -6, GETDATE());
-- ----------
/* ===================================================================================================
Requete 6
Extraction du domaine email des clients
***************************************
Demande du client :
Je veux faire une campagne par fournisseur de mail.
Extrayez la partie après le '@' dans l'adresse électronique des clients.
Quels sont les colonnes pertinents pour mon opération de marketing ?
Indice : 3
====================================================================================================*/
-- Votre code ici
SELECT
[Nom du client],
[Adresse électronique],
SUBSTRING([Adresse électronique], CHARINDEX('@', [Adresse électronique]) + 1, LEN([Adresse électronique])) AS DomaineV1,
RIGHT([Adresse électronique], LEN([Adresse électronique]) - CHARINDEX('@', [Adresse électronique])) DomaineV2
FROM [Clients]
WHERE
[Adresse électronique] IS NOT NULL;
-- --------- /* =================================================================================================== Requete 7 Les employés nés en été *********************** Demande du client : Nous voulons envoyer un cadeau aux employés nés en été (juin, juillet, août). Donnez-moi leur nom et leur date de naissance. ====================================================================================================*/ -- Votre code ici SELECT [Nom], [Prénom], [Date de naissance] FROM [Employés] WHERE MONTH([Date de naissance]) IN (6, 7, 8);
-- --------- /* =================================================================================================== Requete 8 Retards de livraison importants ******************************* Demande du client : Listez-moi les commandes qui ont mis plus de 10 jours entre la passation et l'expédition. e veux voir l'ID de la commande et le nombre de jours écoulés. ====================================================================================================*/ -- Votre code ici SELECT [ID commande], DATEDIFF(DAY, [Date de commande], [Date d'expédition]) AS JoursEcoulés FROM [Commandes] WHERE [Date d'expédition] IS NOT NULL -- Sécurité pour éviter les erreurs AND DATEDIFF(DAY, [Date de commande], [Date d'expédition]) > 10;
-- --------- /* =================================================================================================== Requete 9 Les employés seniors bien payés ******************************* Demande du client : "Je cherche à identifier les employés expérimentés pour un projet spécial. Je veux la liste des employés nés avant 1970, qui ont été embauchés avant l'an 2000, et dont le salaire actuel dépasse 4000$. ====================================================================================================*/ --- Votre code ici SELECT [Nom], [Prénom], [Date de naissance], [Salaire] FROM [Employés] WHERE [Date de naissance] < '1970-01-01' AND [Date d'embauche] < '2000-01-01' AND [Salaire] > 4000;
-- --------- /* =================================================================================================== Requete 10 Clients VIP internationaux ************************** Demande du client : "Je veux contacter nos meilleurs clients à l'étranger pour une offre exclusive. Donnez-moi la liste des clients qui ne sont pas au 'USA', qui ont réalisé plus de 50000$ de ventes l'année dernière, et dont nous avons l'adresse électronique." ====================================================================================================*/ -- Votre code ici SELECT [Nom du client], [Pays], [Ventes de l'année dernière], [Adresse électronique] FROM [Clients] WHERE [Pays] <> 'Etats-unis d''amérique' AND [Ventes de l'année dernière] > 50000 AND [Adresse électronique] IS NOT NULL;
-- --------- /* =================================================================================================== Requete 11 Nombre de fournisseurs par pays ******************************* Demande du client : Dans combien de pays différents travaillons-nous ? Et combien de fournisseurs avons-nous dans chaque pays ? ====================================================================================================*/ -- Votre code ici SELECT [Pays], COUNT(*) AS NombreFournisseurs FROM [Fournisseurs] GROUP BY [Pays] ORDER BY COUNT(*) /*NombreFournisseurs*/ DESC;
-- --------- /* =================================================================================================== Requete 12 Villes les plus actives *********************** Demande du client : Quelles sont les 10 villes où nous avons le plus de clients ? Comptez le nombre de clients par ville. ====================================================================================================*/ -- Votre code ici SELECT TOP 10 [Ville], COUNT([ID client]) AS NbClients FROM [Clients] GROUP BY [Ville] ORDER BY COUNT([ID client]) DESC;
-- --------- /* =================================================================================================== Requete 13 Les meilleures ventes de l'année dernière ******************************************** Demande du client : Je veux une liste des 5 clients qui ont généré le plus de ventes l'année dernière. Affichez leur nom et le montant, du plus grand au plus petit. ====================================================================================================*/ -- Votre code ici SELECT TOP 5 c.[Nom du client], SUM(c.[Ventes de l'année dernière]) AS TotalVentes FROM [Clients] c GROUP BY c.[Nom du client] ORDER BY TotalVentes DESC;
-- --------- /* =================================================================================================== Requete 14 Les 5 meilleurs clients (Chiffre d'affaires) ******************************************** ATTENTION : Demande différente de la précédente Demande du client : Je veux connaître les 5 clients qui ont passé les commandes les plus coûteuses au total. Affichez leur nom et la somme des montants de leurs commandes, du plus grand au plus petit. ====================================================================================================*/ -- Votre code ici SELECT TOP 5 c.[Nom du client], SUM(co.[Montant commande]) AS TotalAchats FROM [Clients] c INNER JOIN [Commandes] co ON c.[ID client] = co.[ID client] GROUP BY c.[Nom du client] ORDER BY TotalAchats DESC; --VerII SELECT TOP 5 c.[Nom du client], SUM(co.[Montant commande]) AS TotalAchats FROM [Clients] c, [Commandes] co WHERE c.[ID client] = co.[ID client] GROUP BY c.[Nom du client] ORDER BY TotalAchats DESC;
-- --------- /* =================================================================================================== Requete 15 La plus grosse commande par client ********************************** Demande du client : Pour chaque client, quelle est le montant de sa plus grosse commande unique ? ====================================================================================================*/ -- Votre code ici -- Version I SELECT cl.[Nom du client], MAX(c.[Montant commande]) AS PlusGrosseCommande FROM [Clients] cl JOIN [Commandes] c ON cl.[ID client] = c.[ID client] GROUP BY cl.[Nom du client]; -- Version II SELECT cl.[Nom du client], MAX(c.[Montant commande]) AS PlusGrosseCommande FROM [Clients] cl, [Commandes] c WHERE cl.[ID client] = c.[ID client] GROUP BY cl.[Nom du client];
-- --------- /* =================================================================================================== Requete 16 Ancienneté de la derniere commande par client ********************************************* Demande du client : Pour chaque client, combien de jours se sont écoulés depuis leur dernière commande jusqu'à aujourd'hui ? ====================================================================================================*/ -- Votre code ici SELECT cl.[Nom du client], DATEDIFF(DAY, MAX(c.[Date de commande]), GETDATE()) AS JoursDerniereCommande FROM [Clients] cl JOIN [Commandes] c ON cl.[ID client] = c.[ID client] GROUP BY cl.[Nom du client]; SELECT cl.[Nom du client], DATEDIFF(DAY, MAX(c.[Date de commande]), GETDATE()) AS JoursDerniereCommande FROM [Clients] cl, [Commandes] c WHERE cl.[ID client] = c.[ID client] GROUP BY cl.[Nom du client];
-- --------- /* =================================================================================================== Requete 17 Ventes par employé et par année Demande du client : "Je veux voir l'évolution de mes vendeurs. Donnez-moi le total des ventes réalisées par chaque employé, regroupé par année de commande." ====================================================================================================*/ -- Votre code ici SELECT CONCAT(e.[Nom], ', ', e.[Prénom]) NomComplet, YEAR(co.[Date de commande]) AS Année, SUM(dc.[Prix unitaire] * dc.[Quantité]) AS TotalVentes FROM [Employés] e JOIN [Commandes] co ON e.[ID employé] = co.[ID employé] JOIN [Détails des commandes] dc ON co.[ID commande] = dc.[ID commande] GROUP BY CONCAT(e.[Nom], ', ', e.[Prénom]), YEAR(co.[Date de commande]) ORDER BY CONCAT(e.[Nom], ', ', e.[Prénom]), YEAR(co.[Date de commande]); -- Version iI SELECT YEAR(co.[Date de commande]) AS Année, CONCAT(e.[Nom], ', ', e.[Prénom]) NomComplet, SUM(dc.[Prix unitaire] * dc.[Quantité]) AS TotalVentes FROM [Employés] e, [Commandes] co, [Détails des commandes] dc WHERE co.[ID commande] = dc.[ID commande] AND e.[ID employé] = co.[ID employé] GROUP BY YEAR(co.[Date de commande]), CONCAT(e.[Nom], ', ', e.[Prénom]) ORDER BY YEAR(co.[Date de commande]), CONCAT(e.[Nom], ', ', e.[Prénom]);
-- --------- /* =================================================================================================== Requete 18 Nombre de produits par fournisseur et par type Demande du client : "Je veux analyser notre catalogue. Combien avons-nous de produits référencés pour chaque combinaison Fournisseur et Type de produit ?" ====================================================================================================*/ -- Votre code ici SELECT f.[Nom du fournisseur], tp.[Nom du type de produit], COUNT(p.[ID produit]) AS NombreProduits FROM [Fournisseurs] f JOIN [Produits] p ON f.[ID fournisseur] = p.[ID fournisseur] JOIN [Types de produit] tp ON p.[ID type de produit] = tp.[ID type de produit] GROUP BY f.[Nom du fournisseur], tp.[Nom du type de produit];
-- --------- /* =================================================================================================== Requete 19 Chiffre d'affaires par type de produit ************************************** Demande du client : Quel est le montant total des ventes pour chaque type de produits ? Je veux voir le nom du type de produit et le total. ====================================================================================================*/ -- Votre code ici SELECT tp.[Nom du type de produit], SUM(dc.[Prix unitaire] * dc.[Quantité]) AS ChiffreAffaires FROM [Types de produit] tp JOIN [Produits] p ON tp.[ID type de produit] = p.[ID type de produit] JOIN [Détails des commandes] dc ON p.[ID produit] = dc.[ID produit] GROUP BY tp.[Nom du type de produit];
-- --------- /* =================================================================================================== Requete 20 Quantité totale achetée par fournisseur *************************************** Demande du client : Quel fournisseur nous a fourni le plus grand nombre d'unités de produits au total (somme des quantités dans les détails de commandes) ? ====================================================================================================*/ -- Votre code ici SELECT TOP 1 f.[Nom du fournisseur], SUM(dc.[Quantité]) AS TotalUnités FROM [Fournisseurs] f JOIN [Produits] p ON f.[ID fournisseur] = p.[ID fournisseur] JOIN [Détails des commandes] dc ON p.[ID produit] = dc.[ID produit] GROUP BY f.[Nom du fournisseur] ORDER BY TotalUnités DESC;
-- --------- /* =================================================================================================== Requete 21 Salaires moyens par poste (avec filtre) *************************************** Demande du client : Quels sont les postes pour lesquels le salaire moyen dépasse 5000$ ? Affichez le poste et le salaire moyen. ====================================================================================================*/ -- Votre code ici SELECT [Poste occupé], AVG([Salaire]) AS SalaireMoyen FROM [Employés] GROUP BY [Poste occupé] HAVING AVG([Salaire]) > 5000;
-- --------- /* =================================================================================================== Requete 22 Employés très actifs et performants *********************************** Demande du client : Je veux récompenser les meilleurs. Affichez les employés qui ont traité plus de 10 commandes AU TOTAL, et dont le montant total des ventes dépasse 20000$. ====================================================================================================*/ -- Votre code ici -- Version I SELECT CONCAT(e.[Nom], ', ', e.[Prénom]), COUNT(co.[ID commande]) AS NbCommandes, SUM(dc.[Prix unitaire] * dc.[Quantité]) AS TotalVentes FROM [Employés] e JOIN [Commandes] co ON e.[ID employé] = co.[ID employé] JOIN [Détails des commandes] dc ON co.[ID commande] = dc.[ID commande] GROUP BY CONCAT(e.[Nom], ', ', e.[Prénom]) HAVING COUNT(co.[ID commande]) > 10 AND SUM(dc.[Prix unitaire] * dc.[Quantité]) > 20000; -- Version II SELECT CONCAT(e.[Nom], ', ', e.[Prénom]), COUNT(co.[ID commande]) AS NbCommandes, SUM(dc.[Prix unitaire] * dc.[Quantité]) AS TotalVentes FROM [Employés] e, [Commandes] co, [Détails des commandes] dc WHERE e.[ID employé] = co.[ID employé] AND co.[ID commande] = dc.[ID commande] GROUP BY CONCAT(e.[Nom], ', ', e.[Prénom]) HAVING COUNT(co.[ID commande]) > 600 AND SUM(dc.[Prix unitaire] * dc.[Quantité]) > 20000;
-- --------- /* =================================================================================================== Requete 23 Catégories de produits "Haut de Gamme" ************************************** Demande du client : Je veux identifier les catégories de produits qui sont considérées comme 'haut de gamme'. Pour moi, une catégorie est haut de gamme si le prix moyen conseillé de ses produits dépasse 50$. Donnez-moi le nom de la catégorie, le nombre de produits qu'elle contient et son prix moyen, triés du plus cher au moins cher. ====================================================================================================*/ -- Votre code ici SELECT tp.[Nom du type de produit], COUNT(p.[ID produit]) AS NombreProduits, AVG(p.[Prix conseillé]) AS PrixMoyen FROM [Types de produit] tp JOIN [Produits] p ON tp.[ID type de produit] = p.[ID type de produit] GROUP BY tp.[Nom du type de produit] HAVING AVG(p.[Prix conseillé]) > 50 ORDER BY PrixMoyen DESC; -- Version II SELECT tp.[Nom du type de produit], COUNT(p.[ID produit]) AS NombreProduits, AVG(p.[Prix conseillé]) AS PrixMoyen FROM [Types de produit] tp, [Produits] p WHERE tp.[ID type de produit] = p.[ID type de produit] GROUP BY tp.[Nom du type de produit] HAVING AVG(p.[Prix conseillé]) > 50 ORDER BY PrixMoyen DESC;
-- --------- /* =================================================================================================== Requete 24 Rapport de performance global (Requête Complexe) ***************************** Demande du client : Je veux les 5 meilleurs employés en termes de ventes totales. Affichez leur nom, le total vendu, et seulement s'ils ont vendu pour plus de 10000$. Triez du meilleur au moins bon. ====================================================================================================*/ -- Votre code ici SELECT TOP 5 CONCAT(e.[Nom], ', ', e.[Prénom]), SUM(dc.[Prix unitaire] * dc.[Quantité]) AS TotalVentes FROM [Employés] e JOIN [Commandes] c ON e.[ID employé] = c.[ID employé] JOIN [Détails des commandes] dc ON c.[ID commande] = dc.[ID commande] GROUP BY CONCAT(e.[Nom], ', ', e.[Prénom]) HAVING SUM(dc.[Prix unitaire] * dc.[Quantité]) > 10000 ORDER BY TotalVentes DESC;
-- --------- /* =================================================================================================== Requete 25 Types de produits rentables et variés ************************************* Demande du client : Je veux me concentrer sur les gammes de produits intéressantes. Affichez les types de produits où le prix moyen conseillé est supérieur à 50$ ET où nous proposons plus de 3 produits différents dans cette catégorie. ====================================================================================================*/ -- Votre code ici SELECT tp.[Nom du type de produit], AVG(p.[Prix conseillé]) AS PrixMoyen, COUNT(p.[ID produit]) AS NbProduits FROM [Types de produit] tp JOIN [Produits] p ON tp.[ID type de produit] = p.[ID type de produit] GROUP BY tp.[Nom du type de produit] HAVING AVG(p.[Prix conseillé]) > 50 AND COUNT(p.[ID produit]) > 3; SELECT tp.[Nom du type de produit], AVG(p.[Prix conseillé]) AS PrixMoyen, COUNT(p.[ID produit]) AS NbProduits FROM [Types de produit] tp, [Produits] p WHERE tp.[ID type de produit] = p.[ID type de produit] GROUP BY tp.[Nom du type de produit] HAVING AVG(p.[Prix conseillé]) > 50 AND COUNT(p.[ID produit]) > 3;
-- --------- /* =================================================================================================== Requete 26 Qui a acheté quoi ? ******************* Demande du client : "J'ai besoin d'un rapport détaillé. Pour chaque commande, je veux savoir le nom du client, le nom du produit acheté, et la quantité commandée." Indice : chaine/séquence d'une commande : Client -> Commande -> Détail -> Produit ====================================================================================================*/ -- Votre code ici SELECT c.[Nom du client], p.[Nom du produit], dc.[Quantité] FROM [Clients] c JOIN [Commandes] co ON c.[ID client] = co.[ID client] JOIN [Détails des commandes] dc ON co.[ID commande] = dc.[ID commande] JOIN [Produits] p ON dc.[ID produit] = p.[ID produit]; SELECT c.[Nom du client], p.[Nom du produit], dc.[Quantité] FROM [Clients] c, [Commandes] co, [Détails des commandes] dc, [Produits] p WHERE c.[ID client] = co.[ID client] AND co.[ID commande] = dc.[ID commande] AND dc.[ID produit] = p.[ID produit];
-- --------- /* =================================================================================================== Requete 27 Performance des employés par produit ************************************ Demande du client : "Je veux évaluer mes vendeurs. Affichez le nom de l'employé, le nom du produit qu'il a vendu, et le prix unitaire pratiqué lors de la vente." ====================================================================================================*/ -- Votre code ici -- Version I SELECT e.[Nom], e.[Prénom], p.[Nom du produit], dc.[Prix unitaire] FROM [Employés] e JOIN [Commandes] co ON e.[ID employé] = co.[ID employé] JOIN [Détails des commandes] dc ON co.[ID commande] = dc.[ID commande] JOIN [Produits] p ON dc.[ID produit] = p.[ID produit]; -- Version II SELECT e.[Nom], e.[Prénom], p.[Nom du produit], dc.[Prix unitaire] FROM [Employés] e, [Commandes] co, [Détails des commandes] dc, [Produits] p WHERE e.[ID employé] = co.[ID employé] AND co.[ID commande] = dc.[ID commande] AND dc.[ID produit] = p.[ID produit];
-- --------- /* =================================================================================================== Requete 28 Traçabilité complète (Client -> Produit -> Fournisseur) ******************** Demande du client : En cas de rappel produit, je dois pouvoir contacter le client. Donnez-moi le nom du client, le nom du produit acheté, et le nom du fournisseur de ce produit. ====================================================================================================*/ -- Votre code ici SELECT c.[Nom du client], p.[Nom du produit], f.[Nom du fournisseur] FROM [Clients] c JOIN [Commandes] co ON c.[ID client] = co.[ID client] JOIN [Détails des commandes] dc ON co.[ID commande] = dc.[ID commande] JOIN [Produits] p ON dc.[ID produit] = p.[ID produit] JOIN [Fournisseurs] f ON p.[ID fournisseur] = f.[ID fournisseur]; -- Version II SELECT DISTINCT c.[Nom du client], p.[Nom du produit], f.[Nom du fournisseur] FROM [Clients] c, [Commandes] co, [Détails des commandes] dc, [Produits] p, [Fournisseurs] f WHERE c.[ID client] = co.[ID client] AND co.[ID commande] = dc.[ID commande] AND dc.[ID produit] = p.[ID produit] AND p.[ID fournisseur] = f.[ID fournisseur] ORDER BY c.[Nom du client];
-- --------- /* =================================================================================================== Requete 29 Demande du client : Affichez le nom du client, la date de commande, le nom du produit, et le nom du type de produit. Indice : (5 tables : Clients, Commandes, Employés, Détails commandes, Produits, Types de produit). ====================================================================================================*/ -- Votre code ici SELECT c.[Nom du client], co.[Date de commande], p.[Nom du produit], tp.[Nom du type de produit] FROM [Clients] c JOIN [Commandes] co ON c.[ID client] = co.[ID client] JOIN [Détails des commandes] dc ON co.[ID commande] = dc.[ID commande] JOIN [Produits] p ON dc.[ID produit] = p.[ID produit] JOIN [Types de produit] tp ON p.[ID type de produit] = tp.[ID type de produit];
-- --------- /* =================================================================================================== Requete 30 Performance Vendeur par Catégorie ********************************* Demande du client : Je veux savoir quel employé vend le mieux dans quelle catégorie. Affichez le nom complet de l'employé, le nom du type de produit, et le total vendu. ====================================================================================================*/ -- Votre code ici SELECT CONCAT(e.[Nom], ' ', e.[Prénom]), tp.[Nom du type de produit], SUM(dc.[Prix unitaire] * dc.[Quantité]) AS TotalVentes FROM [Employés] e JOIN [Commandes] co ON e.[ID employé] = co.[ID employé] JOIN [Détails des commandes] dc ON co.[ID commande] = dc.[ID commande] JOIN [Produits] p ON dc.[ID produit] = p.[ID produit] JOIN [Types de produit] tp ON p.[ID type de produit] = tp.[ID type de produit] GROUP BY CONCAT(e.[Nom], ' ', e.[Prénom]), tp.[Nom du type de produit]; -- Version WHERE SELECT CONCAT(e.[Nom], ' ', e.[Prénom]), tp.[Nom du type de produit], SUM(dc.[Prix unitaire] * dc.[Quantité]) AS TotalVentes FROM [Employés] e, [Commandes] co, [Détails des commandes] dc, [Produits] p, [Types de produit] tp WHERE e.[ID employé] = co.[ID employé] AND co.[ID commande] = dc.[ID commande] AND dc.[ID produit] = p.[ID produit] AND p.[ID type de produit] = tp.[ID type de produit] GROUP BY CONCAT(e.[Nom], ' ', e.[Prénom]), tp.[Nom du type de produit];
--(Difficile) /*==================================================================================================== Produits jamais commandés ********* ==> LEFT JOIN ou SUB SELECT Demande du client : Y a-t-il des produits dans notre catalogue qui n'ont jamais été vendus ? Je veux leur nom. ====================================================================================================*/ -- Votre code ici SELECT p.[Nom du produit] FROM [Produits] p LEFT JOIN [Détails des commandes] dc ON p.[ID produit] = dc.[ID produit] WHERE dc.[ID commande] IS NULL;
W3schools
Python.org