Vous êtes sur la page 1sur 7

Corrigé du TP2

Gestion des ventes par une BD sous Access

3. Etablir les relations entre les tables en respectant les règles de gestion suivantes :

4. Quelle est l’utilité d’appliquer l’intégrité référentielle entre la table Ventes et la


table Produits ?

L’intégrité référentielle évite les incohérences, alors en l’activant entre les tables
Produits et Ventes, Access interdira la création d’une vente si le produit n'existe pas
au préalable.

5. Parmi les enregistrements suivants lesquels seront rejetés par le SGBD et pourquoi ?

Table : Produits
NumPdt Designation PU_HT Categorie
2 Etagère 450 Rangement
3 1680 Bureautique
4 Bureau 2499 Bureautique
2 Imprimante 450 Rangement

Table : Ventes
NumVente NumPdt Quantité DateVente NumRep CodeClt
3 2 5 10/5/2018 14 D800
4 4 8 13/5/2018 11 B200
4 2 10 13/5/2018 14 D800
5 1 10 15/7/2018 11 A100
✓ Pour la table Produits :

Le 4ème enregistrement car le champ « NumPdt » étant la clé primaire ne peut pas
être répétée.

✓ Pour la table Ventes :

Le 3ème enregistrement car il s’agit d’une clé primaire répétée (redondance).


Le 4er enregistrement car aucun produit (dans la table Produits) n’a le numéro = 1.

Partie III : Les requêtes en mode QBE et SQL :

1. Afficher le nom, le prénom et la ville des clients de Mohammedia et Rabat dont le


nom ne commence pas par « A » pour les clients de Mohammedia et l’avant dernière
lettre du prénom des clients de Rabat est « E ».

Mode SQL :

Select NomClt, PrenomClt, Ville


From Clients
Where (Ville = "Mohammedia" And NomClt Not Like "A*") OR
(Ville = "Rabat" And PrenomClt Like "*E?");

2. Afficher le numéro, le nom, le prénom et la date d’embauche de chaque


représentant recruté le premier de chaque mois au cours des années 2012 et 2013.

Mode SQL

Select NumRep, NomRep, PrenomRep, DateEmbauche


From Représentants
Where Day(DateEmbauche)=1 AND Year(DateEmbauche) = 2012 Or
Year(DateEmbauche) = 2013 ;
3. Afficher le nom, le prénom et la date d’embauche des représentants qui ont été
recrutés dans une période à déterminer par l’utilisateur.

Il s’agit d’une requête paramétrée puisque la période n’est pas fixe.

Mode SQL

Select NomRep, PrenomRep, DateEmbauche


From Représentants
Where DateEmbauche Between [Entrer date début période] And [Entrer date
fin période] ;

4. Afficher le numéro des ventes, la désignation et la quantité des produits vendus en


janvier, avril ou juin de l’année 2018. Ajouter un champ qui convertit ces mois en
lettres.

Mode SQL

Select NumVente, Designation, Quantité, Format(DateVente,"mmmm") AS


MoisEnLettres
From Produits Inner Join Ventes On Produits.NumPdt = Ventes.NumPdt
Where Format(DateVente,"mmmm") In ("Janvier","Avril","Juin") And
Year(DateVente) = 2018 ;

5. Afficher le nom, le prénom, le salaire, la date de naissance et l’ancienneté en


nombre d’années de chaque représentant.
Mode SQL

Select NomRep, PrenomRep, SalaireBrut, DateNaiss,


DateDiff("yyyy",[DateEmbauche],Date()) & " ans" As Ancienneté
From Représentants ;

6. Afficher le code, le nom des clients de Casablanca et le numéro de leurs ventes


effectuées durant l’année 2018 avec une quantité moins de 10.

Mode SQL

Select Clients.CodeClt, NomClt, NumVente, Quantité


From Clients, Ventes
Where (Clients.CodeClt = Ventes.CodeClt) And Ville ="Casablanca" And
Quantité < 10 And Year(DateVente) = 2018 ;

Vous pouvez utiliser aussi Inner Join pour représenter la jointure entre les tables
Clients et Ventes

7. Afficher le nom et le prénom des représentants ainsi que les noms et les prénoms
de leurs clients habitant la ville de Mohammedia ou Rabat.

Mode SQL

Select NomRep, PrenomRep, NomClt, PrenomClt


From Représentants Inner Join (Clients Inner Join Ventes On Clients.CodeClt =
Ventes.CodeClt) On Représentants.NumRep = Ventes.NumRep
Where Ville = "Rabat" Or Ville = "Mohammedia" ;

8. Afficher le numéro, la désignation, le prix unitaire et le prix soldé des produits si on


donnait une réduction de 10% aux produits d’une quantité >=10, 5% aux produits de
catégorie informatique et 0% pour les autres produits.
Mode SQL

Select Produits.NumPdt, Designation, PU_HT, IIf([Quantité] >= 10,


[PU_HT]*0.9, IIf([Categorie] = "Informatique", [PU_HT]*0.95,[PU_HT]))
As PrixSoldé
From Produits Inner Join Ventes On Produits.NumPdt = Ventes.NumPdt ;

9. Afficher le nombre de ventes mensuelles passées par les clients de Mohammedia, où


le mois est donné comme paramètre (le mois est exprimé en lettres).

Mode SQL

Select Format([DateVente],"mmmm") As Moiss, Count(NumVente) As


NbreVentes
From Clients Inner Join Ventes On Clients.CodeClt = Ventes.CodeClt
Where Ville = "Mohammedia"
Group By Format([DateVente],"mmmm")
Having Format([DateVente],"mmmm") = [Entrer le mois] ;

10. Afficher pour chaque vente, le numéro, le montant HT et le montant TTC à payer
avec un taux de TVA variable.
Mode SQL

Select NumVente, Sum([PU_HT]*[Quantité]) AS MHT,


Sum([PU_HT]*[Quantité]*(1+[TTVA])) AS MTTC
From Produits Inner Join Ventes On Produits.NumPdt = Ventes.NumPdt
Group By NumVente ;

11. Afficher pour chaque client, le code et la quantité totale mensuelle commandée dans
les six premiers mois de l’année 2018, et ceci pour une quantité totale qui dépasse
20.

Mode SQL

Select CodeClt, Sum(Quantité) AS QuantitéTotale,


Format([DateVente],"mmmm") As Moiss
From Produits Inner Join Ventes On Produits.NumPdt = Ventes.NumPdt
Where Year([Datevente]) = 2018
Group By CodeClt, Format([DateVente],"mmmm"), Month([DateVente])
Having Sum(Quantité) > 20 And Month([DateVente]) <= 6
Order By Month([DateVente]);

12. Afficher pour chaque ville la quantité totale vendues par les représentants dont le
nom ne commence pas par la lettre « N » et dont le salaire n’est pas compris entre
10000 et 15000.
Mode SQL

Select Ville, Sum(Quantité) As QuantitéTotale


From Représentants Inner Join (Clients Inner Join Ventes On Clients.CodeClt =
Ventes.CodeClt) On Représentants.NumRep = Ventes.NumRep
Where NomRep Not Like "N*" And SalaireBrut Not Between 10000 And 15000
Group By Ville ;

13. Pour chaque représentant, afficher le nom, le chiffre d’affaire (Somme (Qté * PU)
réalisé par ce représentant et sa commission au cours du premier trimestre et
dernier trimestre d’une année donnée comme paramètre. Notez bien que chaque
représentant perçoit une commission de 10% sur le chiffre d’affaire réalisé.

Mode SQL

Select NomRep, Sum(PU_Ht*Quantité) As ChiffreAffaire,


Sum(PU_Ht*Quantité*0.1) As Commission
From Produits Inner Join (Représentants Inner Join Ventes On
Représentants.NumRep = Ventes.NumRep) On Produits.NumPdt = Ventes.NumPdt
Where Month([DateVente]) <4 Or Month([DateVente]) >9 And
Year([DateVente]) = [Entrer l'année cherchée]
Group By NomRep ;

Vous aimerez peut-être aussi