Vous êtes sur la page 1sur 3

Exercice Corrig SQL - Etude des Cas avec Corrig SQL TP SQL avec solution

SQL 1
Gestion de location de voitures

Dans le cadre de son dveloppement l'Agence TOP LOCATION dcide d'informatiser son systme d'information. Aprs analyse du systme on vous a propos le MLD suivant :

Travail faire :
1. Crer la base de donnes "Location" avec les diffrentes tables et relations. (Utiliser le logicielAMC Designor afin de gnrer le script de cration de la base de donnes) 2. Raliser les requtes suivantes : a) Afficher la liste des clients trie par Nom ; b) Afficher la liste des contrats, trie par Date contrat ; c) Afficher la liste des contrats dun client donn ; d) Afficher la liste des voitures disponibles ; e) Afficher la liste des rparations pour une voiture donne ;

f) Afficher la rparation la plus chre; g) Afficher le nombre de voiture par type ; h) Afficher le nombre de rparations par voiture ;

i) Afficher le nombre de rparations par type_voiture ; j) Afficher le montant des contrats par client ; k) Afficher le montant dun contrat donn ;

l) Afficher les voitures ayant au moins une date de contrat identique eux dela voiture immatricule 3567ww. -------------------------------------------------------------------------------------------------------

Correction SQL
Question A

-------------------------------------------------------------------------------------------------------

SELECT * FROM client ORDER BY nomclt; Question B SELECT * FROM contrat ORDER BY date_contart DESC; Question C SELECT * FROM contrat WHERE codeclt='C4'; Question D SELECT * FROM voiture WHERE disponible=1; Question E SELECT * FROM reparations WHERE noimmatriculation='52656-I-04'; Question F SELECT * FROM reparations WHERE montant_rep=(SELECT MAX(montant_rep) from reparations); Question G SELECT ty.code_type,ty.description_type,COUNT(v.noimmatriculation) AS nombre_de_voiture FROM type_voiture ty LEFT JOIN voiture v ON ty.code_type=v.code_type GROUP BY ty.code_type; Question H SELECT v.noimmatriculation,v.marque,COUNT(r.noimmatriculation) AS nombre_de_rparations FROM voiture v LEFT JOIN reparations r ON v.noimmatriculation=r.noimmatriculation GROUP BY v.noimmatriculation; Question I SELECT t.code_type,t.description_type, COUNT(r.noimmatriculation) AS nombre_de_rparations FROM type_voiture t

LEFT JOIN voiture v ON t.code_type = v.code_type LEFT JOIN reparations r ON v.noimmatriculation=r.noimmatriculation GROUP BY t.code_type,t.description_type; Question J SELECT cl.codeclt,cl.nomclt,SUM(Montant_Contrat) AS Somme_des_Montants FROM client cl LEFT JOIN contrat c ON cl.codeclt=c.codeclt GROUP BY cl.codeclt; Question K SELECT nocontrat,Montant_Contrat FROM contrat WHERE nocontrat=6; Question L SELECT c.noimmatriculation,v.marque,c.date_contart FROM contrat c Join voiture v ON c.noimmatriculation=v.noimmatriculation WHERE c.date_contart IN(SELECT c.date_contart FROM contrat c where c.noimmatriculation='3567-ww') and c.noimmatriculation<>'3567-ww';