33
Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 1 REQUÊTES : EXERCICES SQL ET QBE : Niveau de difficulté A (très facile) Apprentissages : Une seule table. Critère unique = ordres simples : SELECT, FROM, WHERE, ORDER BY. Comparateurs = <> < <= > >= Noms des champs entre crochets quand ils comportent un espace. Point-virgule (;) à la fin de chaque requête SQL. Étoile (*) pour prendre tous les champs d’une table. Tri simple de la liste sur tel ou tel critère Masquer un champ, nécessaire comme critère d’extraction ou clef de tri, mais indésirable à l’affichage. A1 - Liste des employés (nom, prénom, fonction) sans mise en ordre : (Difficulté = respecter les accents) A2 - Liste des clients (toutes rubriques) : (Difficulté = joker étoile * signifie « toutes rubriques ») A3 - Liste des clients parisiens (toutes rubriques) : (Difficulté = trouver la rubrique filtre, ici Ville, et encadrer les constantes-texte avec des guillemets) A4 - Coordonnées des clients résidant à Stuttgart (nom, adresse, téléphone et fax) : (Difficulté = repérer que la rubrique Nom n’existe pas dans Clients, et que Adresse ne suffit pas)

(Requêtes SQL et QBE & corrigés)

Embed Size (px)

Citation preview

Page 1: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 1

REQUÊTES : EXERCICES SQL ET QBE : Niveau de difficulté A (très facile)

Apprentissages : Une seule table. Critère unique = ordres simples : SELECT, FROM, WHERE, ORDER BY. Comparateurs = <> < <= > >= Noms des champs entre crochets quand ils comportent un espace. Point-virgule (;) à la fin de chaque requête SQL. Étoile (*) pour prendre tous les champs d’une table. Tri simple de la liste sur tel ou tel critère Masquer un champ, nécessaire comme critère d’extraction ou clef de tri, mais indésirable à l’affichage.

A1 - Liste des employés (nom, prénom, fonction) san s mise en ordre : (Difficulté = respecter les accents)

A2 - Liste des clients (toutes rubriques) :

(Difficulté = joker étoile * signifie « toutes rubriques »)

A3 - Liste des clients parisiens (toutes rubriques) :

(Difficulté = trouver la rubrique filtre, ici Ville, et encadrer les constantes-texte avec des guillemets)

A4 - Coordonnées des clients résidant à Stuttgart ( nom, adresse, téléphone et fax) :

(Difficulté = repérer que la rubrique Nom n’existe pas dans Clients, et que Adresse ne suffit pas)

Page 2: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 2

A5 Nom et téléphone de nos clients canadiens (ordr e alpha) : (Difficultés = première utilisation de ORDER BY, et décocher l’affichage des colonnes utiles à la requête mais inutiles à l’affichage, ic i le pays)

A6 - Liste des produits dont le stock est inférieur au niveau de réapprovisionnement :

(Difficulté = première utilisation de 2 rubriques dans une clause WHERE)

A7 - Nom et téléphone des fournisseurs non français (ordre alpha) :

A8 - Liste des catégories de produits par ordre alp habétique :

Page 3: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 3

A9 - Liste des commandes (numéro de l’employé ayant pris la commande, date et montant) rangée par employé et par date :

A10 - Liste des noms de messagers dans l’ordre alph abétique :

A11 - Liste des noms de nos clients (ordre alpha) c hez lesquels nous sommes en contact

avec le propriétaire :

A12 - Liste des produits dont le stock est inférieu r à 10 (par ordre croissant du niveau de

stock) :

A13 - Liste des fournisseurs allemands

(toutes rubriques et ordre alpha sur nom) :

Page 4: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 4

A14 - Même requête, mais ordonnée sur le n° de four nisseur :

A15 - Quelle est la date de naissance de l’employé King ?

A16 - Quels sont les numéros de téléphone et de fax du fournisseur Ma Maison ? (afficher

aussi sa ville) :

A17 - Quel est le numéro de fax du client Bon app’ ?

Page 5: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 5

REQUÊTES : EXERCICES SQL ET QBE : Niveau de difficulté B (facile)

Apprentissages :

Une seule table, toujours... Opérateur «EST NULL». Opérateur «PAS». (IS NULL et IS NOT NULL en SQL). Critères BEETWEEN --- AND ---, #M/J/AA# Utiliser # # pour borner les dates, séparateur de date = / ou - LIKE et les caractères génériques * et ?. LIKE "JJ/MM/AAAA" ORDER BY DESC et ASC. Associations de critères WHERE avec AND et OR.

P P P

LISTE DES REQUÊTES À FORMULER : B1 - Clients dont le nom commence par M :

(Difficulté : première utilisation de LIKE et des c aractères génériques * et ?)

B2 - Liste des noms, téléphones et adresses des cli ents qui n’ont pas de fax (dans l’ordre

des noms des clients) : (Difficulté : premier cas d’utilisation de IS NULL ou IS NOT NULL dans une clause WHERE)

B3 - Liste des fournisseurs qui ont un fax :

Page 6: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 6

B4 - Nom, prix et stock des produits dont le nom co mmence par "QU" : (Ordre alpha)

B5 - Nom et téléphone des fournisseurs installés ai lleurs qu'en France ou en Allemagne

(par pays) : (Difficulté : association de contraintes avec OR ou AND)

B6 - Produits dont on a un stock entre 10 et 30 (par ordre décroissant de stock) :

Difficulté :plage de valeurs entre crochets associé e au joker étoile *

B7 - Clients dont le nom commence par une lettre co mprise entre A et D :

Page 7: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 7

B8 - Produits dont le code catégorie se termine par 88 :

B9 - Produits dont le second signe du code est 1 et le dernier est 8 :

B10 - Commandes reçues le 4 du mois (quel que soit le mois et quelle que soit l’année) :

(Difficultés : respecter la syntaxe contraignante des dates avec LIKE et les jokers)

B11 - Sociétés clientes dont le nom commence par « The » (ordre alpha) :

B12 - Messagers dont le n° n’est pas 2 :

Page 8: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 8

B13 - Noms et téléphones des clients habitant à Par is et ayant un fax (ordre décroissant du nom) :

B14 - Montants des commandes passées en novembre et décembre 1990

(les plus grosses en tête) :

B15 - Liste des produits indisponibles (ordre alpha ) :

Page 9: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 9

REQUÊTES : EXERCICES SQL ET QBE. Niveau de difficulté C (normal).

Apprentissages :

Niveau de difficulté 3 : Comme niveau A et B + jointure de plusieurs tables : Table1 INNER JOIN Table2 ON Clef externe = Identifiant. Manipulations de dates. Combinaisons de ET et de OU.

P P P

LISTE DES REQUÊTES À FORMULER : C1 - Liste des produits avec leur fournisseur, classée par fournisseur, puis par produit :

C2 - Liste de catégories de produits et des produit s les composant (ordre adapté…) :

C3 - Liste des produits achetés au fournisseur "Ma maison"

Page 10: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 10

C4 - Liste des messagers connus de chaque client ( au moins une commande reçue via ce messager), ordonnée par client et par messager :

C5 - Nom et pays des fournisseurs de poissons et fr uits de mer

(choisir un ordre intelligent… et ne pas afficher d e doublons !) :

C6 - Nom et pays des fournisseurs de poissons et fr uits de mer localisés en Suède ET au

Japon (toujours sans doublons !) :

C7 - Liste des clients livrés en 1992 par Speedy Ex press : ordre ville et date d’envoi :

Page 11: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 11

C8 - Nom des clients ayant commandé quelque chose e n mars 1992 (liste triée par ordre chrono et alpha) :

C9 - Nom des clients et produits commandés dans les commandes d’avril 1992 (quel que soit le jour) :

C10 - Catégories de produits vendues le 7 janvier 1 992 (sans doublons) :

Page 12: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 12

REQUÊTES : EXERCICES SQL ET QBE : Niveau de difficulté 4 : difficile

Apprentissages :

Niveau de difficulté 4 : AS : modification du nom des champs. Format des chiffres. Calculs : fonctions MIN, MAX, SUM, AVERAGE, COUNT. GROUP BY et HAVING Opérations sur des cumuls… Requêtes réflexives...

P P P P P

D1 - Pays avec qui nous avons eu le plus grand chif fre d'affaires en 1991 (les plus gros en tête) :

D2 - Quel est le salaire moyen de l’entreprise ?

D3 - Quel est le salaire moyen des vendeurs ?

D3 - Quel est le salaire maximum des vendeurs ?

Page 13: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 13

D4 - Quels sont les salaires moyens, mini et maxis des vendeurs ?

D4 - Quel est le nombre d’employés par chef ?

D5 - Quels sont les salaires moyens, mini et maxis des vendeurs par chef ?

D6 - Quel est le salaire moyen des chefs vendeurs ?

D7 - Total des commandes reçues par pays (en 1991).

Page 14: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 14

D8 - Nombre de commandes expédiées dans les 15 dern iers jours, et CA correspondant. Dans la même requête, calculez la VMC (valeur moyen ne de ces commandes) : chan-gez la date du jour de votre ordinateur pour que no us soyons le 1 er avril 92… La fonc-tion date() rend la date du jour et on peut ajouter ou soustra ire des entiers (des jours). La fonction Somme(Champ) (ou Sum en anglais ) additionne les valeurs de ce champ, la fonction Compte(Champ) dénombre les occur rences de ce champ plein…

D9 - CA par représentant (ordre alpha) en septembre 1990.

D10 - Liste des catégories de produits (ordre alpha ) commandés par chaque client (ordre

alpha) en 1991 et CA correspondant

Page 15: (Requêtes SQL et QBE & corrigés)

Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 15

D11 - Combien avons-nous reçu de commandes en 1992, et pour quel montant (global et moyen) ?

D12 - Quel est le nombre de produits par catégorie ?

Page 16: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 1

REQUÊTES CORRIGÉES : EXERCICES SQL ET QBE. Niveau de difficulté : A (très facile).

A1 - Liste des employés (nom, prénom, fonction) sans mise en ordre :

SELECT Nom, Prénom, Fonction FROM Employés;

A2 - Liste des clients (toutes rubriques) :

SELECT * FROM Clients;

A3 - Liste des clients parisiens (toutes rubriques) :

SELECT * FROM Clients WHERE Ville="Paris";

Page 17: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 2

A4 - Coordonnées des clients résidant à Stuttgart (nom, adresse, téléphone et fax) :

SELECT Société, Adresse, [Code postal], Ville, Téléphone, Fax FROM Clients WHERE Ville="Stuttgart";

A5 Nom et téléphone de nos clients canadiens (ordre alpha) :

SELECT Société, Téléphone FROM Clients WHERE Pays="Canada" ORDER BY Société;

A6 - Liste des produits dont le stock est inférieur au niveau de réapprovisionne-ment :

SELECT [Nom du produit],. [Unités en stock],. [Niveau de réapprovisionnement] FROM Produits WHERE [Unités en stock] < [Niveau de réapprovisionnement];

A7 - Nom et téléphone des fournisseurs non français (ordre alpha) :

SELECT Société, Téléphone FROM Fournisseurs WHERE Pays<>"france" ORDER BY Société;

facultatif

Page 18: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 3

A8 - Liste des catégories de produits par ordre alphabétique :

SELECT [Nom de catégorie] FROM Catégories ORDER BY [Nom de catégorie];

A9 - Liste des commandes (numéro de l’employé ayant pris la com-mande, date et montant) rangée par employé et par date :

SELECT [#N° employé], [Date commande], Montant FROM Commandes ORDER BY [#N° employé], [Date commande];

A10 - Liste des noms de messagers dans l’ordre alphabétique :

SELECT [Nom du messager] FROM Messagers ORDER BY [Nom du messager];

Page 19: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 4

A11 - Liste des noms de nos clients (ordre alpha) chez lesquels nous sommes en contact avec le propriétaire :

SELECT Société FROM Clients WHERE Fonction="propriétaire" ORDER BY Société;

A12 - Liste des produits dont le stock est inférieur à 10 (par ordre croissant du ni-veau de stock) :

SELECT [Nom du produit], [Unités en stock] FROM Produits WHERE [Unités en stock]<10 ORDER BY [Unités en stock];

A13 - Liste des fournisseurs allemands (toutes rubriques et ordre alpha sur nom, puis sur numéro) :

SELECT * FROM Fournisseurs WHERE Pays="allemagne" ORDER BY Société;

Page 20: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 5

SELECT Société FROM Fournisseurs WHERE Pays="allemagne" ORDER BY [N° fournisseur];

A15 - Quelle est la date de naissance de l’employé King ?

SELECT Nom, Prénom, [Date de Naissance] FROM Employés WHERE Nom="King";

A16 - Quels sont les numéros de téléphone et de fax du fournisseur Ma Maison ? (afficher aussi sa ville) :

SELECT Société, Ville, Téléphone, Fax FROM Fournisseurs WHERE Société="Ma maison";

Remarque : il faut taper soi-même les guillemets quand la valeur requise comprend un espace.

A17 - Quel est le numéro de fax du client Bon app’ ?

SELECT Société, Fax FROM Clients WHERE Société="bon app'";

Page 21: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 6

B1 - Clients dont le nom commence par M :

SELECT Société FROM Clients WHERE Société LIKE "m*";

B2 - Liste des noms, téléphones et adresses des clients qui n’ont pas de fax (dans l’ordre des noms des clients) :

SELECT Société, Adresse, [Code postal], Ville, Téléphone FROM Clients WHERE Fax IS NULL ORDER BY Société;

B3 - Liste des fournisseurs qui ont un fax :

SELECT Société, Ville, Fax FROM Fournisseurs WHERE Fax IS NOT NULL;

B4 - Nom, prix et stock des produits dont le nom commence par "QU" (Ordre alpha) :

SELECT [Nom du produit], [Prix unitaire], [Unités en stock] FROM Produits WHERE [Nom du produit] LIKE "qu*" ORDER BY [Nom du produit];

Page 22: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 7

B5 - Nom et téléphone des fournisseurs installés ailleurs qu'en France ou en Alle-magne (par pays) :

SELECT Société, Téléphone FROM Fournisseurs WHERE Pays<>"france" AND Pays<>"allemagne";

B6 - Produits dont on a un stock entre 10 et 30 :

SELECT [Nom du produit], [Unités en stock] FROM Produits WHERE [Unités en stock] BETWEEN 10 AND 30 ORDER BY [Unités en stock] DESC;

B7 - Clients dont le nom commence par une lettre comprise entre A et D :

SELECT Société FROM Clients WHERE Société LIKE "[A-D]*";

B8 - Produits dont le code catégorie se termine par 88 :

SELECT [Nom du produit] FROM Produits WHERE [#Code catégorie] LIKE "??88";

Remarque : en mode Création, pas besoin de taper Comme, ni même les guillemets...

Page 23: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 8

B9 - Produits dont le second signe du code est 1 et le dernier est 8 :

SELECT [Nom du produit], [#Code caté- gorie] FROM Produits WHERE [#Code catégorie] LIKE "?1?8";

B10 - Commandes reçues le 4 du mois (quel que soit le mois et quelle que soit l’année) :

SELECT [N° commande], [Date commande] FROM Commandes WHERE [Date commande] LIKE "04/*/*";

Notez bien qu’en SQL, la syntaxe relative aux dates n’est pas la même avec WHERE ou BETWEEN (M/A/AA entre # #) et LIKE (JJ/MM/AAAA entre " ").

B11 - Sociétés clientes dont le nom commence par « The » (ordre alpha) :

SELECT Société FROM Clients WHERE Société LIKE "the*" ORDER BY Société;

Remarque : simplement taper

the* �

Page 24: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 9

B12 - Messagers dont le n° n’est pas 2 :

SELECT [Nom du messager] FROM Messagers WHERE NOT [N° messager]=2; ou WHERE [N° messager]<>2;

B13 - Noms et téléphones des clients habitant à Paris et ayant un fax (ordre décroissant du nom) :

SELECT Société, Téléphone FROM Clients WHERE (Ville="Paris") AND (Fax IS NOT NULL) ORDER BY Société DESC;

B14 - Montants des commandes passées en novembre et décembre 1990 (les plus grosses en tête) :

SELECT Montant, [Date commande] FROM Commandes WHERE [Date commande] BETWEEN #11/1/90# AND #12/31/90# ORDER BY Montant DESC;

B15 - Liste des produits indisponibles (ordre alpha) :

SELECT [Nom du produit], Indisponible FROM Produits WHERE Indisponible=Yes ORDER BY [Nom du produit];

Page 25: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 10

C1 - Liste des produits avec leur fournisseur, classée par fournisseur, puis par produit :

SELECT [Nom du produit], Société FROM Fournisseurs, Produits, Fournisseurs INNER JOIN Produits ON [N° fournisseur] =[#N° fournisseur] ORDER BY Société, [Nom du produit];

C2 - Liste de catégories de produits et des produit s les composant (ordre adapté…) :

SELECT [Nom de catégorie], [Nom du produit] FROM Catégories, Produits, Catégories INNER JOIN Produits ON [Code catégorie] = [#Code catégorie] ORDER BY [Nom de catégorie], [Nom du produit];

C3 - Liste des produits achetés au fournisseur "Ma maison" :

SELECT [Nom du produit], Société FROM Fournisseurs, Produits, Fournisseurs INNER JOIN Produits ON [N° fournisseur] = [#N° fournisseur] WHERE Société="Ma maison";

C4 - Liste des messagers connus de chaque client (au moins une commande reçue via ce messa-ger), ordonnée par client et par messager :

SELECT DISTINCT Société, [Nom du messager] FROM Clients, Commandes, Messagers, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Messagers INNER JOIN Commandes ON Messagers.[N° messager] = Commandes.[#N° messager] ORDER BY Société, [Nom du messager];

Page 26: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 11

C5 Nom et pays des fournisseurs de poissons et fruits de mer (ordre intelligent… et ne pas afficher de doublons !) :

SELECT DISTINCT Société, Pays FROM Fournisseurs, Produits, Catégories, Fournisseurs INNER JOIN Produits ON [N° fournisseur] = [#N° fournisseur], Catégories INNER JOIN Produits ON [Code catégorie] =[#Code catégorie] WHERE [Nom de catégorie]="Poissons et fruits de mer" ORDER BY Pays, Société;

Je veux LIER Fournisseurs à Catégories :

Pb : il n’y a pas de relation (directe) entre ces deux tables : pas de clef externe [#N° Catégorie] dans Fournisseurs et pas non plus de [#N° Fournisseur] dans Catégories…

DONC : la table Produits n’est pas directement utile (on n’y puise rien pour l’affichage ou des calculs, on n’y teste rien pour l’extraction ou la mise en ordre), mais elle est indispensable pourtant pour établir un pont de liaison entre Fournisseurs et Catégories.

Pour spécifier que l’on ne veut pas de doublons en mode Création, on accède aux propriétés de la requête avec un double clic sur le fond gris autour des tables.

La propriété utile est Valeurs distinctes :Non

Remarque pour les fainéants qui ont de la mémoire (et de bons yeux…) : c’est aussi un double clic sur le Oui qui permet de passer facilement à Non….

C6 - Nom et pays des fournisseurs de poissons et fruits de mer localisés en Suède et au Japon (toujours sans doublons !) :

SELECT DISTINCT Société, Pays FROM Fournisseurs, Produits, Catégories, Fournisseurs INNER JOIN Produits ON [N° fournisseur] = [#N° fournisseur], Catégories INNER JOIN Produits ON [Code catégorie] =[#Code catégorie] WHERE (Pays="Suède" OR Pays="japon") AND ([Nom de catégorie]="Poissons et fruits de mer") ORDER BY Pays, Société;

Conseil : ajoutez le champ [Code catégorie] à la clause SELECT pour contrôler, puis essayez toutes les combinaisons de parenthèses dans la clause WHERE.

Notez bien l’impact du ET et du OU sur les résultats, et réfléchissez longuement pour être bien sûr d’avoir compris ce qui se passe.

Par exemple, il est clair qu’il n’y a aucun fournisseur qui soit à la fois suédois ET japonais…

Page 27: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 12

C7 - Liste des clients livrés en 1992 par Speedy Express : ordre ville et date d’envoi :

SELECT Ville, [Date envoi], Société FROM Clients, Commandes, Messagers, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Messagers INNER JOIN Commandes ON Messagers.[N° messager] = Commandes.[#N° messager] WHERE ([Date envoi] BETWEEN #1/1/92# AND #12/31/92#) AND ([Nom du messager]="Speedy express") ORDER BY Ville, [Date envoi];

Autre possibilité (plus commode) :

WHERE ([Date envoi] LIKE "*/*/1992") AND ([Nom du messager]="Speedy express")

NB : En mode SQL, dans une clause WHERE ou BETWEEN, utilisez les dièses et #M/J/AA# (1 chiffre pour les jours et les mois, 2 chiffres pour l’année). Dans une clause LIKE, utilisez les guillemets et "JJ/MM/AAAA" (2 chiffres pour les jours & mois, 4 chiffres pour l’année).

Attention : en mode Création, le format des dates est toujours J/M/AA (l’assistance d’Access est omniprésente dans ce mode). Par contre, la subtilité des dièses ou des guillemets (Where, Betwwen ou Like…) s’applique ici aussi…

On peut difficilement imaginer plus compliqué sans jeter ce logiciel à la poubelle !…

C8 - Nom des clients ayant commandé quelque chose en mars 1992 (liste triée par ordre chrono et alpha) :

SELECT [Date commande], Société FROM Clients, Commandes, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client] WHERE ([Date commande] LIKE "*/03/1992") ORDER BY [Date commande], Société;

Page 28: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 13

C9 - Nom des clients et produits commandés dans les commandes d’avril 1992 (quel que soit le jour) :

SELECT [Date commande], Société, [Nom du produit] FROM Clients, Commandes, Produits, [Détails commandes], Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Produits INNER JOIN [Détails commandes] ON Produits.[Réf produit] = [Détails commandes].[#Réf produit], Commandes INNER JOIN [Détails commandes] ON Commandes.[N° commande] = [Détails commandes].[#N° commande] WHERE ([Date commande] LIKE "*/04/1992") ORDER BY [Date commande], Société;

C10 - Catégories de produits vendues le 7 janvier 1992 (sans doublons) :

SELECT DISTINCT [Nom de catégorie], [Date commande] FROM Commandes, Catégories, Produits, [Détails commandes], Catégories INNER JOIN Produits ON Catégories.[Code catégorie] = Produits.[#Code catégorie], Produits INNER JOIN [Détails commandes] ON Produits.[Réf produit] = [Détails commandes].[#Réf produit], Commandes INNER JOIN [Détails commandes] ON Commandes.[N° commande] = [Détails commandes].[#N° commande] WHERE ([Date commande] = #1/7/92#);

D1 - Pays avec qui nous avons eu le plus grand chiffre d'affaires en 1991 (les plus gros en tête) :

SELECT [Pays livraison], Sum(Montant) AS [Total Montants] FROM Commandes GROUP BY [Pays livraison] ORDER BY Sum(Montant) DESC;

Page 29: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 14

D2 - Quel est le salaire moyen de l’entreprise ?

SELECT Avg([salaire annuel actuel]) AS [Salaire moyen général] FROM Employés;

D3 - Quel est le salaire moyen des vendeurs ?

SELECT Avg([salaire annuel actuel]) AS [Salaire moyen des vendeurs] FROM Employés GROUP BY Fonction HAVING Fonction="représentant(e)";

D3 - Quel est le salaire maximum des vendeurs ?

SELECT Max([salaire annuel actuel]) AS [Salaire maximum des vendeurs] FROM Employés GROUP BY Fonction HAVING Fonction="représentant(e)";

D4 - Quels sont les salaires moyens, mini et maxis des vendeurs ?

SELECT Avg([salaire annuel actuel]) AS [Vendeurs - Salaire moyen], Min([salaire annuel actuel]) AS Mini, Max([salaire annuel actuel]) AS Maxi FROM Employés GROUP BY Fonction HAVING Fonction="représentant(e)";

Page 30: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 15

D4 - Nombre d’employés par chef ? SELECT Chefs.Nom, Count(Employés.[N° employé]) AS [dirige (nb de personnes)] FROM Employés, Employés AS Chefs, Employés INNER JOIN Chefs ON Employés.[#Rend compte à] = Chefs.[N° employé] GROUP BY Employés.[#Rend compte à], Chefs.Nom HAVING Employés.[#Rend compte à] Is Not Null;

D5 - Quels sont les salaires moyens, mini et maxis des vendeurs par chef ?

SELECT Chefs.Nom AS Chef, Avg(Employés.[salaire annuel actuel]) AS [Vendeurs - Salaire moyen], Min(Employés.[salaire annuel actuel]) AS Mini, Max(Employés.[salaire annuel actuel]) AS Maxi FROM Employés, Employés AS Chefs, Employés INNER JOIN Chefs ON Employés.[#Rend compte à] = Chefs.[N° employé] GROUP BY Chefs.Nom, Employés.Fonction HAVING Employés.Fonction="représentant(e)";

D6 - Salaire moyen des chefs vendeurs ?

SELECT Avg(Employés.[salaire annuel actuel]) AS [Salaire moyen des chefs vendeurs] FROM Employés GROUP BY Employés.Fonction HAVING Employés.Fonction="Chef des ventes";

Page 31: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 16

D7 - Total des commandes reçues par pays (en 1991).

SELECT [Pays livraison], Sum(Montant) AS [CA 1991] FROM Commandes WHERE [Date commande] Like "*/*/1991" GROUP BY [Pays livraison];

D8 - Nombre de commandes expédiées dans les 15 dern iers jours, et CA correspondant. Dans la même requête, calculez la VMC (valeur moyen ne de ces commandes) :

SELECT SUM(Montant) AS [CA des 15 derniers jours], COUNT(Montant) AS [Nombre de commandes], SUM([Montant])/COUNT([Montant]) AS VMC FROM Commandes WHERE [Date commande] BETWEEN Date()-15 AND Date();

D9 - CA par représentant (ordre alpha) en septembre 1990.

SELECT Nom AS Vendeur, Sum(Montant) AS [CA en sept 90] FROM Commandes INNER JOIN Employés ON Commandes.[#N° employé] = Employés.[N° employé] WHERE [Date commande] Like "*/09/1990" GROUP BY Nom ORDER BY Nom;

Page 32: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 17

D10 - Liste des catégories de produits (ordre alpha ) commandés par chaque client (ordre alpha) en 1991 et CA correspondant

SELECT Société, [Nom de catégorie], Sum(Commandes.Montant) AS [CA en 91] FROM Clients, Commandes, [Détails commandes], Produits, Catégories, Clients INNER JOIN Commandes ON Clients.[Code client] = Commandes.[#Code client], Commandes INNER JOIN [Détails commandes] ON Commandes.[N° commande] = [Détails commandes].[#N° commande], [Détails commandes] INNER JOIN Produits ON [Détails commandes].[#Réf produit] = Produits.[Réf produit], Produits INNER JOIN Catégories ON Produits.[#Code catégorie] = Catégories.[Code catégorie] WHERE [Date commande] Like "*/*/1991" GROUP BY Clients.Société, Catégories.[Nom de catégorie] ORDER BY Clients.Société, Catégories.[Nom de catégorie];

D11 - Combien avons-nous reçu de com-mandes en 1992, et pour quel montant (global et moyen) ?

SELECT Count(Montant) AS [Nb de commandes en 92], Sum(Montant) AS [CA 92], Avg(Montant) AS [VMC 92] FROM Commandes WHERE Commandes.[Date commande] Like "*/*/1992";

Page 33: (Requêtes SQL et QBE & corrigés)

CORRIGÉS des exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 18

D12 - Quel est le nombre de produits par catégorie ?

SELECT [Nom de catégorie] AS Catégorie, Count([Réf produit]) AS [Nb de produits] FROM Produits INNER JOIN Catégories ON Produits.[#Code catégorie] = Catégories.[Code catégorie] GROUP BY [Nom de catégorie] ORDER BY [Nom de catégorie];

< <