• Embed Doc
  • Readcast
  • Collections
  • CommentGo Back
Download
Exercices

Cr\u00e9er le sch\u00e9ma relationnel suivant :
Commande(NumCom, DatCom)
LigneCommande(NumCom,NumArt,QteCommandee)
Article(NumArt,PUArt,QteEnStock, SeuilMinimum)

1 .
1 .Ecrire un programme qui calcule le montant de la commande

num\u00e9ro 10 et affiche un message 'Commande Normale' ou 'Commande Sp\u00e9ciale' selon que le montant est inf\u00e9rieur ou sup\u00e9rieur \u00e0 100000 DH

2 .
2 .Ecrire un programme qui supprime l'article num\u00e9ro 8 de la

commande num\u00e9ro 5 et met \u00e0 jour le stock. Si apr\u00e8s la suppression de cet article, la commande num\u00e9ro 5 n'a plus d'articles associ\u00e9s, la supprimer.

3 .
3 .Ecrire un programme qui affiche la liste des commandes et

indique pour chaque commande dans une colonne Type s'il s'agit d'une commande normale (montant <=100000 DH) ou d'une commande sp\u00e9ciale (montant > 100000 DH)

4 .
4 .A supposer que toutes les commandes ont des montants

diff\u00e9rents, \u00e9crire un programme qui stocke dans une nouvelle table temporaire les 5 meilleures commandes (ayant le montant le plus \u00e9lev\u00e9) class\u00e9es par montant d\u00e9croissant (la table \u00e0 cr\u00e9er aura la structure suivante : NumCom, DatCom, MontantCom)

5 .
5 .Ecrire un programme qui :
\ue000Recherche le num\u00e9ro de commande le plus \u00e9lev\u00e9 dans la
table commande et l'incr\u00e9mente de 1
\ue000Enregistre une commande avec ce num\u00e9ro
\ue000Pour chaque article dont la quantit\u00e9 en stock est

inf\u00e9rieure ou \u00e9gale au seuil minimum enregistre une ligne de commande avec le num\u00e9ro calcul\u00e9 et une quantit\u00e9 command\u00e9e \u00e9gale au triple du seuil minimum

Solutions
1 .
1 .
Declare @Montant decimal

Set @Montant=(Select Sum(PUArt*QteCommandee) from Commande C, Article A, LigneCommande LC where C.NumCom=LC.NumCom

and
LC.NumArt=A.NumArt and C.NumCom=10)
If @Montant is null
BeginPrint 'Cette Commande n''existe pas ou elle n''a pas
d''ingr\u00e9dients'
Return
End
if @Montant <=10000
Print 'Commande Normale'
Else
Print 'Commande Sp\u00e9ciale'
2 .
2 .
Declare @Qte decimal
Set @Qte=(select QteCommandee from LigneCommande
where NumCom=5 and NumArt=8)
Delete from LigneCommande where NumCom=5 and
NumArt=8
Update article set QteEnStock=QteEnStock+@Qte where
NumArt=8
if not exists (select numcom from LigneCommande where
NumCom=5)
Delete from commande where NumCom=5
3 .
3 .
Select C.NumCom, DatCom, Sum(PUArt*QteCommandee),
'Type'=

Case
When Sum(PUArt*QteCommandee) <=10000 then
'Commande Normale'
Else 'Commande Sp\u00e9ciale'

End
From Commande C, Article A, LigneCommande LC
Where C.NumCom=LC.NumCom and LC.NumArt=A.NumArt
Group by C.NumCom, DatCom

4 .
4 .
Create Table T1 (NumCom int, DatCom DateTime, MontantCom
decimal)
of 00

Leave a Comment

You must be to leave a comment.
Submit
Characters: ...
You must be to leave a comment.
Submit
Characters: ...