Partie I
SQL de base
128
© Éditions Eyrolles
Jointures externes
Les jointures externes permettent d’extraire des enregistrements qui ne répondent pas aux critères de jointure. Lorsque deux tables sont en jointure externe, une table est « dominante » par
rapport à l’autre (qui est dite « subordonnée »). Ce sont les enregistrements de la table dominante qui sont retournés (même s’ils ne satisfont pas aux conditions de jointure).
Comme les jointures internes, les jointures externes sont généralement basées sur les clés
primaires et étrangères. On distingue les jointures unilatérales qui considèrent une table dominante et une table subordonnée, et les jointures bilatérales pour lesquelles les tables jouent un
rôle symétrique (pas de dominant).
Jointures unilatérales
En considérant les tables suivantes, une jointure externe unilatérale permet d’extraire :
q
la liste des compagnies et leurs pilotes, même les compagnies n’ayant pas de pilote
(requête R7). Sans une jointure externe, la compagnie 'CAST' ne peut être extraite ;
q
la liste des pilotes et leurs qualifications, même les pilotes n’ayant pas encore de qualification (requête R8).
La figure illustre les tables dominantes et subordonnées :
R6
SELECT pil.brevet, pil.nom,
pil.nbHVol, hv.titre
FROM Pilote pil, HeuresVol hv
SELECT brevet, nom, nbHVol, titre
FROM Pilote
;
+--------+------------------+---------+----------+
| brevet | nom
| nbHVol | titre
|
+--------+------------------+---------+----------+
| PL-1
| Pierre Lamothe
| 450.00 | Débutant |
| PL-2
| Didier Linxe
| 900.00 | Initié
|
| PL-3
| Christian Soutou | 1000.00 | Initié
|
| PL-4
| Henri Alquié
| 3400.00 | Expert
|
+--------+------------------+---------+----------+
Tableau 4-37 Exemples d’inéquijointures (suite)
Requête Jointure relationnelle
Jointure SQL2
WHERE pil.nbHVol BETWEEN
hv.basnbHVol AND hv.hautnbHVol;
JOIN HeuresVol ON nbHVol
BETWEEN basnbHVol AND hautnbHVol
SQL de base
128
© Éditions Eyrolles
Jointures externes
Les jointures externes permettent d’extraire des enregistrements qui ne répondent pas aux critères de jointure. Lorsque deux tables sont en jointure externe, une table est « dominante » par
rapport à l’autre (qui est dite « subordonnée »). Ce sont les enregistrements de la table dominante qui sont retournés (même s’ils ne satisfont pas aux conditions de jointure).
Comme les jointures internes, les jointures externes sont généralement basées sur les clés
primaires et étrangères. On distingue les jointures unilatérales qui considèrent une table dominante et une table subordonnée, et les jointures bilatérales pour lesquelles les tables jouent un
rôle symétrique (pas de dominant).
Jointures unilatérales
En considérant les tables suivantes, une jointure externe unilatérale permet d’extraire :
q
la liste des compagnies et leurs pilotes, même les compagnies n’ayant pas de pilote
(requête R7). Sans une jointure externe, la compagnie 'CAST' ne peut être extraite ;
q
la liste des pilotes et leurs qualifications, même les pilotes n’ayant pas encore de qualification (requête R8).
La figure illustre les tables dominantes et subordonnées :
R6
SELECT pil.brevet, pil.nom,
pil.nbHVol, hv.titre
FROM Pilote pil, HeuresVol hv
SELECT brevet, nom, nbHVol, titre
FROM Pilote
;
+--------+------------------+---------+----------+
| brevet | nom
| nbHVol | titre
|
+--------+------------------+---------+----------+
| PL-1
| Pierre Lamothe
| 450.00 | Débutant |
| PL-2
| Didier Linxe
| 900.00 | Initié
|
| PL-3
| Christian Soutou | 1000.00 | Initié
|
| PL-4
| Henri Alquié
| 3400.00 | Expert
|
+--------+------------------+---------+----------+
Tableau 4-37 Exemples d’inéquijointures (suite)
Requête Jointure relationnelle
Jointure SQL2
WHERE pil.nbHVol BETWEEN
hv.basnbHVol AND hv.hautnbHVol;
JOIN HeuresVol ON nbHVol
BETWEEN basnbHVol AND hautnbHVol
