Documente Academic
Documente Profesional
Documente Cultură
Semestre : 1er
Session : Principale
Les attributs soulignés correspondent aux clés primaires, les attributs suivis de # correspondent aux clés
étrangères.
Ecrire les requêtes suivantes dans le langage SQL.
Indication : Vous utiliserez pour R1 et R3 les deux opérateurs MINUS et NOT EXISTS ; pour la requête
R2 les deux opérateurs INTERSECT et EXISTS.
R1 : Numéros des pilotes conduisant exactement les mêmes avions que le pilote dont le plnum=1.
R2 : Numéros des pilotes conduisant au moins un même avion que le pilote dont le plnum=1.
R3 : Numéros des pilotes conduisant toutes les avions conduites par le pilote dont le plnum=1.
R4 : Nombre de vols assurés par le pilote dont le nom est Lakhal.
R5 : Le nom du pilote assurant le nombre maximum de vols dont la ville de départ est Tunis.
Les attributs soulignés correspondent aux clés primaires, les attributs suivis de # correspondent aux clés
étrangères.
Ecrire les requêtes suivantes dans le langage SQL :
Q1 (4 pts) : Ecrire les commandes SQL qui permettent de créer les deux tables Personne et Union.
Q2 (1,5 pts) : Quels sont les prénoms des enfants de Ali AGHA ?
Q3 (1,5 pts) : Quel est le nom de la femme de Ali AGHA ?
Q4 (1 pt) : Quels sont les numéros des oncles paternels et des tantes paternelles de Ali AGHA ?
Q5 (2 pts) : Quels sont les numéros des grands-parents et tous les aïeuls (arrière, arrière, …, grands-
parents) paternels de Ali AGHA ?
1
Correction devoir du 13/11/2019
R1 : Numéros des pilotes conduisant exactement les mêmes avions que le pilote dont le plnum=1.
select plnum
from pilote
where not exists ( select avnum
from vol
where plnum = 1
minus
select avnum
from vol
where (pilote.plnum=vol.plnum)
and (plnum<>1)
)
and not exists ( select avnum
from vol
where (pilote.plnum=vol.plnum)
and (plnum<>1)
Minus
select avnum
from vol
where plnum = 1
) ;
R2 : Numéros des pilotes conduisant au moins un même avion que le pilote dont le plnum=1.
select plnum
from pilote
where exists ( select avnum
from vol
where (pilote.plnum=vol.plnum)
and (plnum<>1)
intersect
select avnum
from vol
where plnum = 1 )
R3 : Numéros des pilotes conduisant toutes les avions conduites par le pilote dont le plnum=1.
select plnum
from pilote
where not exists ( select avnum
from vol
where plnum = 1
minus
select avnum
from vol
where (pilote.plnum=vol.plnum)
2
and (plnum<>1) ) ;
select plnum
from vol v1
where plnum <>1
and avnum in (select avnum
from vol v2
where (v2.plnum = 1)
)
Group by plnum
Having count(distinct avnum)= (select count(distinct avnum)
from vol v3
where (v3.plnum = 1)
)
select count(*)
from vol
where plnum in (select plnum
from pilote
where upper(plnom)=’LAKHAL’) ;
R5 : Le nom du pilote assurant le nombre maximum de vols dont la ville de départ est Tunis.
select plnom
from vol, pilote
where (pilote.plnum=vol.plnum)
and (upper(villedep)=’TUNIS’)
group by pilote.plnum
having count(*) = (select max(count(*))
from vol
where upper(ville)=’TUNIS’
group by plnum
)
select A.nom
from Personne a, Personne b
where (a.numPere=b.numPers) and
(upper(b.nom)=’ALI’) and
(upper(b.prenom)=’AGHA’);
select a.nom
from Personne a, Personne b, Union C
where (c.numMari=b.num) and
(upper(b.nom)=’ALI’) and
(upper(b.prenom)=’AGHA’) and
(c.NumEpouse=a.numPers);
select a.numPers
from Personne a, Personne b, Personne c
where ((a.numPere=b.numPere)or(a.numMere=b.numMere))and
(upper(c.nom)=’SALMA’) and
(upper(c.prenom)=’BELLAGHA’) and
(c.numPere=b.numPers);
5. Quels sont les numéros des grands-parents et tous les aïeuls (arrière, arrière, …, grands-parents)
paternels de Ali AGHA ?