Vous êtes sur la page 1sur 3

Module : Informatique de Gestion Professeur : Laila Alami Kasri

Atelier3 : Manipulation des données : Le langage SQL - Solution

1. Donnez le numéro et nom des clients originaires de « Casablanca » classés par ordre
alphabétique croissant (nom).

Solution : Select nclient, nomclient


From client
Where ville = "Casablanca"
Order by nomclient;

Remarque : l’attribut ville est de type text donc la valeur Casablanca est mise entre
guillemets.
L’ordre croissant dans order by est pris par défaut, nous n’avons donc pas d’ajouter asc.

2. Donnez la description et le code article dont le prix est supérieur à 150 DH.

Solution : Select codeArticle , description


From Articles
Where prix > 150 ;

Remarque : l’attribut prix est numérique, il ne faut pas écrire DH dans la requête.

3. Donnez la liste des articles fournis par « Super info ».

Solution : Select *
From Articles
Where FourniPar = "Super info" ;

Remarque : * permet de remplacer tous les attributs.

4. Donnez le numéro et la date des commandes du client n°1.

Solution : Select Ncommande , datecommande


From Commandes
Where Nclient = 1 ;

5. Donnez la liste des articles (code, description, prix et prixTTC 20% de TVA) dont le prix est
compris entre 200 DH et 500 DH. Afficher le résultat par ordre décroissant de prix.

Solution : Select codeArticle, description, prix, prix *1.2 as TTC


From Articles
Where (prix >= 200) and (Prix <= 500)
Order by prix desc ;
Remarque : prix*1.2 est une expression calculée, nous l’avons nommé TTC.
6. Donnez la liste des commandes (numéro, date et article) contenant des articles importés
ayant été passés le mois de septembre.

Solution : Select Ncommande , datecommande, article


From Commandes
Where (importé = true) and (Month(datecommande) =9) ;

Remarque : importé est de type logique vrai/Faux. Donc importé = true


Month (datecommande) est une fonction qui retourne le Mois numérique de la date
commande.

7. Donnez le nombre de commandes de chaque client.

Solution : Select Nclient , count(*) as Nombre


From Commandes
Group by Nclient;

Remarque : pour calculer le nombre de commandes, il faut utiliser la fonction count. group by
permet de créer des sous relations, une par client. L’attribut dans le group by doit exister dans
Select.

8. Donnez le numéro des clients ayant passé plus de deux commandes.

Solution : Select Nclient


From Commandes
Group by Nclient
Having count(*) >2;
Remarque : Même requête que 7° avec la condition du nombre de commandes >2, d’où le having
après le group by.

9. Donnez la liste des commandes (numéro, date, numéro de client et nom) des clients
originaires de « Agadir ».

Solution : Select Ncommande , datecommande, C.Nclient, nomclient


From Commandes D , Client C
Where (Ville ="Agadir") and (C.Nclient = D.Nclient) ;
Remarque : Il faut utiliser ici 2 tables donc nécessairement la jointure (C.Nclient = D.Nclient) .
C et D sont des variables de désignation qui remplaçent le nom des tables.
A chaque fois qu’un attribut appartient à 2 tables, il faut préciser la table utilisée. Ceci a été
appliqué sur C.Nclient dans Select.

10. Donnez la liste des articles (code et description) d’un fournisseur donné [paramètre saisi au
clavier].
Solution : Select codeArticle, description
From Articles
Where FourniPar = [Donnez le nom du fournisseur] ;
Remarque : Quand nous voulons donner la valeur d’une condition pendant l’exécution, la
requête est paramétrée par [message].
11. Donnez le nom des clients et personne à contacter (avec préfixe) ayant commandés des
articles importés.

Solution : Select nomclient, prefixe & " " & contact as contacter
From clients C, commandes D
Where (importé = true) and (C.Nclient = D.Nclient);

Remarque : & est l’opérateur de concaténation.

12. Donnez le prix minimal et le prix maximal des articles commandés.

Solution : Select min(prix) as minimum, max(prix) as maximum


From Articles A, commandes D
Where article = codeArticle ;

Remarque : Les fonctions min et max sont utilisées pour avoir le minimum et le maximum. La
table commande est utilisée pour avoir les articles commandés. Les articles qui ne figurent pas
dans commande ne sont pas considérés.

13. Donnez pour chaque client, son numéro, son nom et le montant à payer pour toutes ses
commandes.

Solution : Select D.Nclient, nomclient, sum(prix*quantité) as Montant


From Articles A, Client C, commandes D
Where (codeArticle = article) and (C.Nclient = D.Nclient)
Group by D.Nclient, nomclient ;

Remarque : Pour chaque client qui a passé commande on calcule la somme des prix*quantités.
Nomclient se trouve dans client, quantité dans commandes et prix dans articles. Donc nous
avons utilisé les 3 tables avec 2 jointures.
N tables dans From nécessite au mons (N-1) jointures dans Where.
(codeArticle = article) est la 1ère jointure, ici la variable de désignation n’est pas nécessaire
parceque les 2 attributs n’ont pas le même nom.
(C.Nclient = D.Nclient) est la 2e jointure, ici la variable de désignation est pas nécessaire
parceque les 2 attributs ont le même nom.

Vous aimerez peut-être aussi