TD 2 - Requêtes imbriquées 1 Traduire les énoncés suivants en

Transcription

TD 2 - Requêtes imbriquées 1 Traduire les énoncés suivants en
TD 2 - Requêtes imbriquées
G11, Bases de données et SQL
20 septembre 2006
1
Traduire les énoncés suivants en requêtes SQL :
Base employé :
1. liste des employés qui ont leur supérieur direct à ’DALLAS’.
2. ville dans laquelle travaille l’employé ’FORD’.
3. dates d’embauche des employés arrivés dans l’entreprise après ’JAMES’, classées par ordre croissant.
4. liste des différents métiers proposés au département de ’NEW YORK’.
5. noms des employés qui ont le même métier et le même supérieur que ’MARTIN’ (autres que luimême ! !).
6. liste des départements qui n’ont pas d’employé.
7. noms et salaires des employés qui ne travaillent ni à ’CHICAGO’ ni à ’DALLAS’.
Base gaulois :
1. nom du village où habite ’Obelix’.
2. liste des gaulois qui ont le même métier que ’Panoramix’.
3. liste des camps qui ont plus de légionnaires que le camp de ’BABAORUM’.
4. dates et noms des batailles qui ont opposé le village ’Village gaulois’ au camp de ’BABAORUM’.
5. noms des villages qui ont plus de huttes que le village de ’Fantome’, mais moins que le village de
’Serum’.
6. noms des camps romains qui ont moins de légionnaires que de tentes.
7. nom du chef de ’Uderzoville’.
2
Que font les requêtes SQL suivantes ?
Base employé :
SELECT * FROM emp WHERE mgr IN ( SELECT empno FROM emp WHERE job=’PRESIDENT’ );
SELECT ename, hiredate FROM emp WHERE job = ’SALESMAN’ AND hiredate >
( SELECT hiredate FROM emp WHERE ename = ’CLARK’ );
SELECT * FROM emp WHERE sal BETWEEN 1000 AND 2000 AND deptno =
( SELECT deptno FROM dept WHERE loc=’CHICAGO’ ) ORDER BY sal DESC;
SELECT empno, sal FROM emp WHERE job IN
( SELECT job FROM emp WHERE deptno =
( SELECT deptno FROM dept WHERE loc=’NEW YORK’ ) );
1
Base gaulois :
SELECT * FROM gaulois WHERE vilno=( SELECT vilno FROM gaulois WHERE nom=’Asterix’ );
SELECT nom FROM gaulois WHERE vilno IN
( SELECT vilno FROM bataille WHERE campno =
( SELECT campno FROM camp WHERE nom=’PETITBONUM’ ) );
SELECT nom, metier FROM gaulois WHERE sexe =
( SELECT sexe FROM gaulois WHERE gauno=104 );
SELECT * FROM potion WHERE duree < ( SELECT duree FROM potion WHERE nom=’Dodo’ );
3
Modèle relationnel
Après s’être aperçu d’une surconsommation anormale de potions d’invincibilité, Panoramix décide de
tenir un registre des absorptions. Ce registre doit lui permettre de retrouver qui a consommé quoi et
quand, et en quelle quantité.
Questions :
1. Proposez une structure pour la table absorption qui permette d’accéder à toutes ces informations.
2. Utilisez cette table pour formuler les énoncés suivants sous forme de requêtes SQL :
i. dates des consommations d’Asterix.
ii. dates d’absorption des potions d’invincibilité consommées par ’Obelix’.
iii. liste des potions bues par des gauloises.
iv. noms des potions consommées le jour de la bataille d’Alesia.
v. liste des gaulois qui ont bus des potions ’Aphrodisiaque’.
vi. liste des potions consommées contre le camp de ’PETITBONUM’.
Rappel : structure des tables.
emp : empno
dept : deptno
ename
dname
job
loc
mgr
hiredate
sal
gaulois : gauno nom sexe metier vilno
village : vilno nom nbhutte chef
camp : campno nom nbtente nblegio
bataille : batno nom vilno campno datebat
potion : potno nom effet duree
2
comm
duree
deptno

Documents pareils