requ%eates sql et qbe & corrig%e9s niv abcd 4

38
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) Exercices de requêtes : SQL et QBE É. Chouard - Lycée M. Pagnol Page 1

Upload: bihmanos

Post on 12-Jan-2016

15 views

Category:

Documents


0 download

DESCRIPTION

Requete sql correction

TRANSCRIPT

Page 1: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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èreMasquer 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)  : (Diffi-culté = repérer que la rubrique Nom n’existe pas dans Clients, et que Adresse ne suf -fit pas)

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

Page 2: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

A5 Nom et téléphone de nos clients canadiens (ordre alpha) : (Difficultés = première utilisation de ORDER BY, et décocher l’affichage des colonnes utiles à la requête mais inutiles à l’affichage, ici 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 alphabétique :

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

Page 3: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

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

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

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

A13 - Liste des fournisseurs allemands (toutes rubriques et ordre alpha sur nom) :

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

Page 4: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

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’ ?

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

Page 5: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 caractères génériques * et ?)

B2 - Liste des noms, téléphones et adresses des clients 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 :

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

Page 6: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

B5 - Nom et téléphone des fournisseurs installés ailleurs 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 comprise entre A et D :

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

Page 7: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 :

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

Page 8: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

B13 - Noms et téléphones des clients habitant à Paris 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) :

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

Page 9: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 produits les composant (ordre adapté…) :

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

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

Page 10: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 fruits de mer (choisir un ordre intelligent… et ne pas afficher de doublons !) :

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

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

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

Page 11: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

C8 - Nom des clients ayant commandé quelque chose en 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 1992 (sans doublons) :

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

Page 12: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 HAVINGOpérations sur des cumuls…Requêtes réflexives...

P P P P P

D1 - Pays avec qui nous avons eu le plus grand chiffre 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 ?

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

Page 13: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 ?

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

Page 14: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

D8 - Nombre de commandes expédiées dans les 15 derniers jours, et CA correspondant. Dans la même requête, calculez la VMC (valeur moyenne de ces commandes) : chan-gez la date du jour de votre ordinateur pour que nous soyons le 1er avril 92… La fonc-tion date() rend la date du jour et on peut ajouter ou soustraire 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 occurrences de ce champ plein…

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

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

Page 15: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

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 ?

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

Page 16: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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, FonctionFROM Employés;

A2 - Liste des clients (toutes rubriques) :

SELECT *FROM Clients;

A3 - Liste des clients parisiens (toutes rubriques) :

SELECT *FROM ClientsWHERE Ville="Paris";

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

Page 17: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

SELECT Société, Adresse, [Code postal], Ville, Téléphone, Fax

FROM ClientsWHERE Ville="Stuttgart";

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

SELECT Société, TéléphoneFROM ClientsWHERE Pays="Canada"ORDER BY Société;

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

SELECT [Nom du produit],.[Unités en stock],.[Niveau de réapprovisionnement]

FROM ProduitsWHERE [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éphoneFROM FournisseursWHERE Pays<>"france"ORDER BY Société;

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

facul-tatif

Page 18: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

SELECT [Nom de catégorie]FROM CatégoriesORDER 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 CommandesORDER BY [#N° employé], [Date

commande];

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

SELECT [Nom du messager]FROM MessagersORDER BY [Nom du messager];

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

Page 19: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

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

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

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

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

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

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

Page 20: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

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

SELECT Nom, Prénom, [Date de Naissance]FROM EmployésWHERE 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, FaxFROM FournisseursWHERE 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é, FaxFROM ClientsWHERE Société="bon app'";

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

Page 21: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

B1 - Clients dont le nom commence par M :

SELECT SociétéFROM ClientsWHERE 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 ClientsWHERE Fax IS NULLORDER BY Société;

B3 - Liste des fournisseurs qui ont un fax :

SELECT Société, Ville, FaxFROM FournisseursWHERE 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 ProduitsWHERE [Nom du produit] LIKE "qu*"ORDER BY [Nom du produit];

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

Page 22: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

SELECT Société, TéléphoneFROM FournisseursWHERE 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 ProduitsWHERE [Unités en stock] BETWEEN 10 AND 30ORDER BY [Unités en stock] DESC;

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

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

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

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

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

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

Page 23: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

SELECT [Nom du produit], [#Code caté-gorie]

FROM ProduitsWHERE [#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 CommandesWHERE [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 ClientsWHERE Société LIKE "the*"ORDER BY Société;

Remarque : simplement taper

the*

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

Page 24: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

SELECT [Nom du messager]FROM MessagersWHERE NOT [N° messager]=2;

ouWHERE [N° messager]<>2;

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

SELECT Société, TéléphoneFROM ClientsWHERE (Ville="Paris") AND (Fax IS NOT NULL)ORDER BY Société DESC;

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

SELECT Montant, [Date commande]FROM CommandesWHERE [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], IndisponibleFROM ProduitsWHERE Indisponible=YesORDER BY [Nom du produit];

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

Page 25: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

 C1 - Liste des produits avec leur fournisseur, clas-sé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 produits 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];

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

Page 26: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

SELECT DISTINCT Société, PaysFROM 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 dou-blons en mode Création, on accède aux pro-prié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é, PaysFROM 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…

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

Page 27: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

C7 - Liste des clients livrés en 1992 par Speedy Ex-press : 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 chro-no 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é;

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

Page 28: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 CommandesGROUP BY [Pays livraison]ORDER BY Sum(Montant) DESC;

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

Page 29: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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ésGROUP BY FonctionHAVING Fonction="représentant(e)";

D3 - Quel est le salaire maximum des vendeurs ?

SELECT Max([salaire annuel actuel]) AS [Salaire maximum des vendeurs]

FROM EmployésGROUP BY FonctionHAVING 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ésGROUP BY FonctionHAVING Fonction="représentant(e)";

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

Page 30: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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.NomHAVING Employés.[#Rend compte à] Is Not Null;

D5 - Quels sont les salaires moyens, mi-ni 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 MaxiFROM 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.FonctionHAVING 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ésGROUP BY Employés.FonctionHAVING Employés.Fonction="Chef des ventes";

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

Page 31: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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

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

D8 - Nombre de commandes expédiées dans les 15 derniers jours, et CA correspondant. Dans la même requête, calculez la VMC (valeur moyenne 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 CommandesWHERE [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ésON Commandes.[#N° employé] =

Employés.[N° employé]WHERE [Date commande] Like "*/09/1990"GROUP BY NomORDER BY Nom;

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

Page 32: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

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 CommandesON 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 CommandesWHERE Commandes.[Date commande] Like "*/*/1992";

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

Page 33: Requ%EAtes SQL Et QBE & Corrig%E9s Niv ABCD 4

D12 - Quel est le nombre de produits par ca-té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];

< <

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