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