29.10.2014 Views

Rappels des concepts fondamentaux - smis inria

Rappels des concepts fondamentaux - smis inria

Rappels des concepts fondamentaux - smis inria

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Forme de la condition de recherche<br />

Projections et restrictions simples<br />

::= [NOT]<br />

θ constante ⏐ <br />

LIKE <br />

IN <br />

θ (ALL ⏐ ANY ⏐ SOME) <br />

EXISTS <br />

UNIQUE <br />

MATCH [UNIQUE] <br />

BETWEEN constante AND constante<br />

AND ⏐ OR <br />

Liste <strong>des</strong> médicaments de plus de 50€ NomMed<br />

SELECT NomMed FROM MED WHERE Prix> 50 ;<br />

Liste <strong>des</strong> médicaments de plus de 50 € NomMed (prix stocké en FF)<br />

SELECT NomMed FROM MED WHERE Prix/6,55957 > 50 ;<br />

Nom <strong>des</strong> docteurs habitant ‘Florac’ NomDoc<br />

SELECT NomDoc FROM DOC WHERE VilleDoc = ‘Florac’<br />

Liste <strong>des</strong> motifs <strong>des</strong> consultations du 25/12/2006 Motif sans doublons<br />

SELECT DISTINCT Motif FROM RDV WHERE DateRDV = ‘25/12/2006’<br />

avec<br />

θ ::= < ⏐ = ⏐ > ⏐ ≥ ⏐≤ ⏐ <br />

Remarque: : peut être dynamiquement déterminée par une requête<br />

45<br />

46<br />

Restrictions complexes et jointures<br />

Requêtes imbriquées : IN et EXIST<br />

Liste <strong>des</strong> patients ayant un RDV avec le docteur ‘Dupont’ NomPat<br />

SELECT<br />

FROM<br />

WHERE<br />

PAT.NomPat<br />

PAT, RDV, DOC<br />

PAT.NumPat = RDV.NumPat and RDV.NumDoc = DOC.NumDoc<br />

and DOC.NomDoc like ‘Dupont’;<br />

Médicaments commençant par « ASPI » et prescrits en août 2008 NomMed<br />

SELECT<br />

FROM<br />

WHERE<br />

DISTINCT M.NomMed<br />

MED M, DET D, ORD O<br />

M.NumMed = D.NumMed and D.NumOrd = O.NumOrd<br />

and NomMed like ‘ASPI%’<br />

and O.Date BETWEEN ’01/08/2008’ and ’31/08/2008’;<br />

Docteurs ayant le même nom qu’un patient NomDoc<br />

SELECT<br />

D.NomDoc FROM PAT P, DOC D WHERE P.NomPat = D.NomDoc;<br />

Liste <strong>des</strong> patients ayant un RDV avec le docteur ‘Dupont’ NomPat<br />

SELECT DISTINCT P.NomPat<br />

FROM PAT P, RDV R, DOC D<br />

WHERE P.NumPat = R.NumPat and R.NumDoc = D.NumDoc and D.NomDoc = ‘Dupont’;<br />

Et celle-ci ?<br />

SELECT P.NomPat FROM PAT P WHERE P.NumPat in<br />

(SELECT R.NumPat FROM RDV R WHERE R.NumDoc in<br />

(SELECT D.NumDoc FROM DOC WHERE D.NomDoc = ‘Dupont’));<br />

Et celle-là ?<br />

SELECT P.NomPat FROM PAT P WHERE EXISTS<br />

(SELECT * FROM RDV R WHERE P.NumPat = R.NumPat and EXISTS<br />

(SELECT * FROM DOC D WHERE R.NumDoc=D.NumDoc and D.NomDoc = ‘Dupont’));<br />

L’imbrication est un moyen de décomposer<br />

une requête complexe en sous-requêtes plus simples<br />

47<br />

48

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!