© Éditions Eyrolles
125
chapitre n° 4
Interrogation des données
Autojointure
Cas particulier de l’équijointure, l’autojointure relie une table à elle même.
Extrayons par exemple :
q
l’identité des pilotes placés sous la responsabilité des pilotes de nom 'Alquié'
(requête R3) ;
q
la somme des heures de vol des pilotes placés sous la responsabilité des chefs pilotes de la
compagnie de nom 'Air France' (requête R4).
Ces requêtes doivent être programmées à l’aide d’une autojointure, car elles imposent de
parcourir deux fois la table Pilote (examen de chaque pilote en le comparant à un autre).
Les autojointures sont réalisées entre les colonnes brevet et chefPil.
La jointure de la première requête est illustrée dans la figure par les données surlignées en
clair, tandis que la deuxième jointure est mise en valeur par les données surlignées en foncé.
Tableau 4-35 Exemples d’équijointures
Requête
Jointure relationnelle
Jointure SQL2
R1
SELECT brevet, nom
FROM Pilote, Compagnie
AND
nomComp = 'Air France'
AND
nbHVol > 500;
SELECT brevet, nom
FROM Compagnie
WHERE nomComp = 'Air France'
AND
nbHVol > 500;
+--------+--------------+
| brevet | nom
|
+--------+--------------+
| PL-2
| Didier Linxe |
| PL-4
| Henri Alquié |
+--------+--------------+
R2
SELECT cpg.nomComp, cpg.nrue,
cpg.rue, cpg.ville
FROM Pilote pil, Compagnie cpg
AND
pil.nbHVol < 500;
SELECT nomComp, nrue, rue, ville
FROM Compagnie
WHERE nbHVol < 500;
+------------+------+------------+-------+
| nomComp
| nrue | rue
| ville |
+------------+------+------------+-------+
| Air France | 124 | Port Royal | Paris |
+------------+------+------------+-------+
Web
WHERE comp
= compa
JOIN Pilote ON comp = compa
WHERE cpg.comp
= pil.compa
INNER JOIN Pilote ON comp = compa
Précédent

- 147/418

Suivant