*** Bonjour à tous, ***
voila un exercice que j'ai essayer de le faire en utilisant mysql mais il ya des fautes que je peux pas les corriger
Soit le schéma textuel de la base de données gestion_voyages
Voyageur (num_passp, nom, prenom, adr, date_nais)
Voyage (num_voy, ville_dest, date_dep, date_arr, tarif)
Réservation (num_voy#, num_passp#, confirmation)
Afficher la liste de voyageurs qui ont confirmé leur voyage à "Beyrout" et qui sont originaire de "Sfax"
1 2 3
| SELECT num_passp, nom, prenom
FROM réservation r, voyage v, voyageur vr
WHERE r.num_passp = vr.num_passp AND r.num_voy = v.num_voy AND confirmation = 1 AND ville_dest = "beyrout" AND adr = "sfax"; |
1) Ecrire le code SQL de création de la base :
1 2 3 4 5 6 7 8 9 10 11 12
| create table Voyageur (num_passp int(11) primary key ,
nom varchar (20) not null , prenom varchar (20) not null, adr varchar(45), date_nais date );
CREATE TABLE Voyage( num_voy int(10) PRIMARY KEY CHECK (num_voy > 100 ),
ville_dest varchar( 10 ) NOT NULL ,
date_dep date NOT NULL ,
date_arr date NOT NULL ,
tarif float );
CREATE TABLE Réservation( num_voy int( 11 ) REFERENCES voyahe( num_voy ) ON DELETE CASCADE ON UPDATE CASCADE ,
num_passp int( 10 ) REFERENCES voyageur ON DELETE CASCADE ON UPDATE CASCADE ,
confirmation int( 1 ) NOT NULL ); |
2) Pour chaque table insérer les enregistrements suivants :
1 2 3
| INSERT INTO `voyageur` ( `num_passp` , `nom` , `prenom` , `adr` , `date_nais` )
VALUES (
'123457 ', 'Ben Salah', 'Sana', 'Tunis ', '23/07/1987') ; |
voici les tables
table voyageur
Num_pass Nom Prénom Adr Date_nais
110045 Tounsi Kamel Sfax 11/12/1985
123457 Ben Salah Sana Tunis 23/07/1987
109876 Omri Mohsen Sousse
213456 Younes Youssef Sfax 13/11/1978
100655 Benzarti Wafa Sfax 07/05/1980
108987 Sallemi Moussa Tunis
200087 Jilani Kaouther Sfax 17/01/1970
137689 Yahya Mouna Nabeul
111235 Blel Hosni Mahdia 21/11/1988
table voyage
Num_voy Ville_dest Date_dep Date_arr Tarif
1001 Tripoli 13/02/2009 13/02/2009 300
1002 Beyrout 25/03/2009 25/03/2009 600
1003 Caire 13/05/2009 16/05/2009 400
table réservation
Num_voy Num_pass confirmation
1001 110045 1
1001 123457 1
1001 109876 0
1002 200087 1
1002 108987 1
1002 213456 0
1002 110045 1
1003 100655 1
1003 137689 0
1003 111235 0
3) Exprimer en SQL les requêtes suivantes :
Projection :
R1 : lister la table voyageur
1 2
| SELECT *
FROM voyageur; |
R2 : Afficher le prénom, nom et la date de naissance de tout les voyageurs
SELECT nom , prenom ,date_nais FROM voyageur;
Restriction :
R3 : Afficher la liste des voyageurs dont l’adresse est Sfax, trier la liste par ordre croissant de Num passeport
Select * from voyageur where adr = "sfax" order by num_passp asc ;
R4 : Afficher la liste des voyageurs dont l’age >25, trier la liste par ordre décroissant des date de naissance.
1 2 3 4
| Select *
From voyageur
Where year(current_date()) -year(date_nais )>25
Order by date_nais Desc; |
R5 : Afficher les noms, prénom et adresses des voyageurs qui sont originaires de (Tunis, Sfax, Sousse)
Select nom , prenom , adr from voyageur where adr = "sfax" or adr = "tunis" or adr = "sousse" ;
Jointure :
R6 : afficher la liste des voyageurs qui ont réservé pour un voyage à la ville de "Tripoli"
1 2 3 4 5 6
| SELECT num_passp
FROM réservation r, voyage v
WHERE r.num_voy = v.num_voy AND ville_dest = "tripoli";
SELECT *
FROM réservation r, voyage v, voyageur vr
WHERE r.num_voy = v.num_voy AND r.num_passp = vr.num_passp AND ville_dest like "tripoli"; |
Resultat ne s’affiche pas
R7 : Afficher la liste de voyageurs qui ont confirmé leur voyage à "Beyrout"
1 2 3
| SELECT num_passp, nom, prenom
FROM réservation r, voyage v, voyageur vr
WHERE r.num_passp = vr.num_passp AND r.num_voy = v.num_voy AND confirmation = 1 AND ville_dest like"beyrout"; |
(fausse et je sais pas pourquoi )
R8 : Afficher la liste de voyageurs qui ont confirmé leur voyage à "Beyrout" et qui sont originaire de "Sfax"
1 2 3
| SELECT num_passp, nom, prenom
FROM réservation r, voyage v, voyageur vr
WHERE r.num_passp = vr.num_passp AND r.num_voy = v.num_voy AND confirmation = 1 AND ville_dest = "beyrout" AND adr = "sfax"; |
(fausse et je sais pas pourquoi )
R9 : Afficher la liste de voyageurs qui ont confirmé leurs voyages.
1 2 3
| SELECT *
FROM réservation r, voyageur vr
WHERE r.num_passp = vr.num_passp AND confirmation = 1; |
Utilisation des fonctions :
R10 : Afficher la date de naissance du plus vieux voyageur et celle du plus jeune.
1 2
| SELECT max( date_nais ) , min( date_nais )
FROM voyageur; |
(fausse et je sais pas pourquoi )
R11 : Afficher le nombre des voyageurs qui ont réservé pour le voyage de "Caire"
SELECT count (*) FROM réservation r , voyage v WHERE r.num_voy = v.num_voy and ville_dest = "caire";
(fausse et je sais pas pourquoi )
R12 : Afficher la somme des tarifs ainsi que le nombre de voyageurs qui ont confirmé leur voyage dont le num est 1001.
1 2 3
| SELECT sum( tarif ) , count( * )
FROM réservation r , voyage v
WHERE r.num_voy = v.num_voy = 1001 ; |
(fausse et je sais pas pourquoi )
R13 : Afficher la liste des voyageurs qui ont l’age >25.
1 2 3
| Select *
From voyageur
Where year(current_date()) -year(date_nais )>25 ; |
Auto jointure :
R14 : afficher la liste des voyageurs dont l’age est inférieur à celui du voyageur dont le num de passeport est "213456"
Select * from voyageur where date_nais < ( select date_nais from voyageur where num_passp = 213456) ;
(fausse et je sais pas pourquoi )
R15 : Afficher les noms et les prénoms des voyageurs ayant la même adresse du voyageur dont le nom est "Benzarti"
Select nom, prenom from voyageur v, voyageur vr where v.num_passp= vr.num_passp and adr in (select adr from voyageur where nom = "benzarti") ;
(fausse et je sais pas pourquoi )
1 2 3
| SELECT nom, prenom
FROM voyageur v, voyageur vr
WHERE v.adr = vr.adr AND vr.nom = "benzarti"; |
(fausse et je sais pas pourquoi )
*** Merci. ***
Partager