DSSGL 2008: Correction Examen Final - Partie 1

Partie 1 : Questions de cours SQL

 

En considérant le MLD ci-dessous concernant un système de facturation pour les clients d’une PME, répondez aux questions ci-après.

 

 

 

1)     Donner l’instruction qui a permis de créer la table Article en considérant que AID est un nombre entier, ADesignation une chaine de caractère variable de longueur 20 et APrixUnitaire un montant d’argent. 2pts

CREATE TABLE ARTICLE (

AID                                  Integer Primary Key,

ADESIGNATION           Varchar (20),

APRIXUNITAIRE           Monetaire);

2)     Ecrire l’instruction qui permet d’ajouter un article avec un AID valant 101, de désignation 'Clé USB 1Go' et prix unitaire de 5000. 2pts

INSERT INTO Article ( AID, ADESIGNATION, APRIXUNITAIRE )

VALUES (101,'Clé USB 1Go',5000);

3)     Modifiez la taxe avec la valeur « 0.18 » pour toutes les factures émises après le 1er janvier 2000 inclus. 2pts

UPDATE  FACTURE

SET  FTAXE=0.18

WHERE FDATE>='01/01/2000'

4)     Ecrire une instruction permettant de supprimer tous les clients qui n’ont jamais fait l’objet de facturation. 2pts

DELETE FROM CLIENT

WHERE CID Not In (SELECT CID FROM FACTURE);

5)     Afficher la liste des clients pour lesquelles les champs « adresse e-mail » et « téléphone » sont vides. 2pts

SELECT * FROM CLIENT

WHERE CEMail='' AND CTéléphone=''

6)     Afficher une liste indiquant le code et la date de la facture, le nom et le prénom du client. 2pts

SELECT F.FCODE, F.FDATE, C.CNom, C.CPrénoms

FROM Client C  INNER JOIN Facture F ON C.CID = F.CID;

7)     Afficher une liste indiquant le code de la facture et le montant total de la facture (sans considérer la remise au niveau de la facture). 2pts

SELECT D.FID, SUM(DFQuantité*APRIXUNITAIRE) as MontantTotal

FROM DetailsFacture  D  INNER JOIN ARTICLE A ON D.AID = A.AID

GROUP BY D.FID;

8)     Afficher une liste indiquant pour chaque client (uniquement le champ CID) la remise maximale et la remise minimale. 2pts

9)     Afficher la liste des articles qui ont été facturés en plus de 100 exemplaires. 2pts

SELECT A.AID, SUM(DFQuantité) as QteTotal

FROM DetailsFacture  D  INNER JOIN ARTICLE A ON D.AID = A.AID

GROUP BY A.AID

HAVING SUM(DFQuantité) >=100;

10)  Afficher la liste des 10 derniers clients en date ayant reçus une facture. 2pts

SELECT TOP 10 C.*

FROM CLIENT C INNER JOIN FACTURE F ON C.CID=F.CID

ORDER BY F.FDATE DESC

Pour être informé des derniers articles, inscrivez vous :