Les requtes en langage SQL (exercices)
Exemple choisi : La socit X utilise le logiciel de gestion de base de donnes Access pour grer ses clients et ses reprsentants. Voici la liste des tables cres dans Access :
la table reprsentant
NUM_REP 1 2 3 4 5 6 NOM_REP DELMOTTE HINAUD LAPIERRE LATOUR LEMOINE LEMOINE AD_REP 18 rue Aristide Briand 25 rue Martel 89 rue Gaston berger 7 rue du Four 5 rue Aubos 12 route des Fiacres CP_REP 75012 94120 95100 91700 91700 93140 VIL_REP PARIS FONTENAY SOUS BOIS ARGENTEUIL FLEURY MROGIS FLEURY MEROGIS BONDY AGE_REP 26 31 52 44 28 34
la table couvrir
NUM_REP 1 1 2 2 3 3 4 5 5 6 6 COD_DEP 75 94 93 94 91 75 95 93 91 92 95
la table dpartement
COD_DEP 75 91 92 93 94 95 NOM_DEP Paris Essonne Hauts de Seine Seine Saint Denis Val de Marne Val d'Oise CHEF SECTEUR PONS BERTRAND FISCHER FISCHER BERTRAND BERTAND
la table client
CODE_CLT 1 2 3 4 5 6 .. NOM_CLT BOCCARD RALDI PIERROL ENGELI ATR PARTOLI NUM_REP 1 2 2 2 4 4 NUM_CAT 1 1 3 3 2 3
la table catgorie tarifaire
NUM_CAT 1 2 3 NOM_CAT ENTREPRISES COLLECTIVITES PARTICULIERS REMISE 10% 5% 0%
Le modle relationnel correspondant :
REPRESENTANT (Num_rep, Nom_rep, Ad_rep, CP_rep, Vil_rep, Age_rep) COUVRIR (#Num_rep, #Code_dep) DEPARTEMENT (Code_dep, nom_dep, chef secteur) CLIENT (Code_clt, Nom_clt, #Num-rep,#Num-cat) CATEGORIE TARIFAIRE (Num_cat, Nom_cat, Remise) Ecrire les requtes suivantes
1) Afficher la liste des clients appartenant la catgorie tarifaire n1, classe par ordre alphabtique 2) Afficher la liste des clients (code, nom de client) rattachs au reprsentant HINAUD 3) Afficher la liste des clients bnficiant d'une remise de 10% 4) Afficher la liste des reprsentants (Numro et nom) dpendant du chef de secteur PONS 5) Afficher la liste des dpartements (code, nom, chef de secteur) 6) Afficher la liste des chefs de secteur
Correction
R1) SELECT * FROM Client WHERE Num-cat =1 ORDER BY Nom-clt ASC R2) SELECT [Link]-clt, [Link]-clt FROM Client, Reprsentant WHERE [Link]-rep = Hinaud AND [Link]-rep = [Link] R3) SELECT Client.* FROM Client, Catgorie tarifaire WHERE Catgorie [Link] = 10% AND [Link]-cat = Catgorie [Link]-cat R4) SELECT [Link]-rep, [Link]-rep FROM Reprsentant, Couvrir, Dpartement Where [Link] secteur = Pons AND [Link]-rep = [Link]-rep AND [Link]-dep = [Link]-dep R5) SELECT * FROM Dpartement R6) SELECT DISTINCT Chef secteur FROM Dpartement
Facultatif
R1) SELECT * FROM Client WHERE Num-cat =1 ORDER BY Nom-clt ASC R2) SELECT [Link]-clt, [Link]-clt FROM Client, Reprsentant WHERE [Link]-rep = Hinaud AND [Link]-rep = [Link]
Facultatif
R3) SELECT Client.* FROM Client, Catgorie tarifaire WHERE Catgorie [Link] = 10% AND [Link]-cat = Catgorie [Link]-cat R4) SELECT [Link]-rep, [Link]-rep FROM Reprsentant, Couvrir, Dpartement Where [Link] secteur = Pons AND [Link]-rep = [Link]-rep AND [Link]-dep = [Link]-dep R5) SELECT * FROM Dpartement R6) SELECT DISTINCT Chef secteur FROM Dpartement