Vous êtes sur la page 1sur 4

Corrigé Examen de Bases de Données

3. Ma requête doit afficher toutes les informations des passagers dont leurs noms contiennent la suite
des deux lettres "MA", et ayant réservé le vol n°2. Exprimer cette requête en SQL.

SELECT Passager.*
FROM Passager INNER JOIN Reservation ON Passager.NumPass = Reservation.NumPass
Where Passager.NomPass like "*MA*" and Reservation.NumVol = 2;

4. Les requêtes en mode QBE et SQL :


a. Afficher le numéro et la date des vols faits en Mars des années 2014 ou 2015, de l’aéroport
de Fès vers l’aéroport de Marseille.

SELECT V.NumVol, V.DateVol


FROM Vol As V Inner Join (Aeroport As A Inner Join [Aeroport-De-Vol] AS AV ON
A.CodeAeroport = AV.CodeAeroport) ON V.NumVol = AV.NumVol
WHERE (Month([DateVol])=3 AND Year([DateVol]) in (2014,2015) AND
VilleAeroport="Fès" AND Destination="Marseille");
b. Afficher le nom, le prénom et la nationalité des pilotes qui ont volé le dernier jour de chaque
mois du premier trimestre des années 2014 et 2015.

2/2
SELECT Pilote.NomPilote, Pilote.PrenomPilote, Pilote.NationalitePilote
FROM Pilote Inner Join Vol ON Pilote.NumPilote = Vol.NumPilote
WHERE (Day([DateVol])=31 AND Month([DateVol]) In (1,3) AND Year([DateVol]) In
(2014,2015)) OR (Day([DateVol])=28 AND Month([DateVol])=2 AND Year([DateVol])
In (2014,2015));

c. Afficher le numéro de vol et les mois de vols des avions de type Boeing, dont les mois sont
affichés en lettre et le nombre de places n’est pas compris entre 350 et 500.

SELECT Vol.NumVol, Format([DateVol],"mmmm") AS MoisEnLettres


FROM Avion Inner Join Vol ON Avion.CodeAvion = Vol.CodeAvion
WHERE Avion.TypeAvion="Boeing" AND Avion.NbPlacesAvion Not Between 350
And 500;
Ou bien
SELECT Vol.NumVol, MonthName(Month(DateVol)) AS MoisEnLettres
FROM Avion Inner Join Vol ON Avion.CodeAvion = Vol.CodeAvion
WHERE Avion.TypeAvion="Boeing" AND Avion.NbPlacesAvion Not Between 350
And 500;

d. Afficher le numéro, le nom, le prénom, et le prix réduit des passagers si on donnait une
réduction de 5% du prix du vol aux voyageurs de la Classe première ou affaires et 0% dans
le cas contraire.

2/2
SELECT Passager.NumPass, Passager.NomPass, Passager.PrenomPass,
IIf([ClasseVol] In ("Première","Affaire"),[PrixVol]*0.95,[PrixVol]) AS PrixRéduit
FROM Passager Inner Join Reservation ON Passager.NumPass =
Reservation.NumPass;

e. Pour chaque pilote, afficher le numéro, le nom et le nombre total de ses vols au cours du
dernier trimestre d’une année donnée comme paramètre.

SELECT Pilote.NumPilote, Pilote.NomPilote, Count(Vol.NumVol) AS NbreTotal


FROM Pilote Inner Join Vol ON Pilote.NumPilote = Vol.NumPilote
WHERE Month([datevol])>9 AND Year([datevol])=[Année]
GROUP BY Pilote.NumPilote, Pilote.NomPilote;

f. Effectuer une augmentation de prix du vol de 10% pour les vols de classes affaires réservés
3 jours avant la date du vol au cours de l’année 2016.

UPDATE Vol Inner Join Reservation ON Vol.NumVol = Reservation.NumVol SET


Reservation.PrixVol = "PrixVol*1,1"
WHERE Reservation.ClasseVol="Affaires" AND DateDiff("d",[datereserv],
[datevol])<=3 AND Year([DateReserv])=2016;
g. Affichez la moyenne des prix de vols mensuels effectués dans les six derniers mois de
l’année en cours, par classe de vol. Les classes doivent être affichées en colonne et les noms
des mois en ligne.

2/2
TRANSFORM Avg(PrixVol) AS PrixMoyVol
SELECT Format([DateVol],"mmmm") AS MoisVol
FROM Vol INNER JOIN Reservation ON Vol.NumVol = Reservation.NumVol
WHERE (((DateDiff("m",[DateVol],Date()))<=6))
GROUP BY Format([DateVol],"mmmm")
PIVOT Reservation.ClasseVol;

2/2

Vous aimerez peut-être aussi