© Éditions Eyrolles
127
chapitre n° 4
Interrogation des données
Inéquijointure
Les requêtes d’inéquijointures font intervenir tout type d’opérateur (<>, >, <, >=, <=, BETWEEN,
LIKE, IN). À l’inverse des équijointures, la clause d’une inéquijointure n’est pas basée sur
l’égalité de clés primaires (ou candidates) et de clés étrangères.
En considérant les tables suivantes, extrayons par exemple :
q
les pilotes ayant plus d’expérience que le pilote de numéro de brevet 'PL-2' (requête R5).
q
le titre de qualification des pilotes en raisonnant sur la comparaison des heures de vol avec
un ensemble de référence, ici la table HeuresVol (requête R6). Dans notre exemple, il
s’agit par exemple de retrouver le fait que le premier pilote est débutant.
La jointure qui résoudra la deuxième requête est illustrée par les niveaux de gris.
Le tableau suivant détaille ces requêtes, les clauses d’inéquijointures sont surlignées :
Figure 4-14 Inéquijointures
Pilote
brevet
nom
nbHVol compa
chefPil
PL-1
Pierre Lamothe
450
AF
PL-4
PL-2
Didier Linxe
900
AF
PL-4
PL-3
Christian Soutou
1000
SING
PL-4
Henri Alquié
3400
AF
HeuresVol
titre
basnbHVol hautnbHVol
Débutant
0
500
Initié
501
1000
Expert
1001
20000
Tableau 4-37 Exemples d’inéquijointures
Requête Jointure relationnelle
Jointure SQL2
R5
SELECT p1.brevet, p1.nom,
p1.nbHVol, p2.nbHVol "Référence"
FROM Pilote p1, Pilote p2
AND p2.brevet = 'PL-2';
SELECT p1.brevet, p1.nom,
p1.nbHVol, p2.nbHVol "Référence"
FROM Pilote p1
WHERE p2.brevet = 'PL-2';
+--------+------------------+---------+-----------+
| brevet | nom
| nbHVol | Référence |
+--------+------------------+---------+-----------+
| PL-3
| Christian Soutou | 1000.00 |
900.00 |
| PL-4
| Henri Alquié
| 3400.00 |
900.00 |
+--------+------------------+---------+-----------+
Web
WHERE p1.nbHVol > p2.nbHVol
JOIN
Pilote p2 ON p1.nbHVol>p2.nbHVol
127
chapitre n° 4
Interrogation des données
Inéquijointure
Les requêtes d’inéquijointures font intervenir tout type d’opérateur (<>, >, <, >=, <=, BETWEEN,
LIKE, IN). À l’inverse des équijointures, la clause d’une inéquijointure n’est pas basée sur
l’égalité de clés primaires (ou candidates) et de clés étrangères.
En considérant les tables suivantes, extrayons par exemple :
q
les pilotes ayant plus d’expérience que le pilote de numéro de brevet 'PL-2' (requête R5).
q
le titre de qualification des pilotes en raisonnant sur la comparaison des heures de vol avec
un ensemble de référence, ici la table HeuresVol (requête R6). Dans notre exemple, il
s’agit par exemple de retrouver le fait que le premier pilote est débutant.
La jointure qui résoudra la deuxième requête est illustrée par les niveaux de gris.
Le tableau suivant détaille ces requêtes, les clauses d’inéquijointures sont surlignées :
Figure 4-14 Inéquijointures
Pilote
brevet
nom
nbHVol compa
chefPil
PL-1
Pierre Lamothe
450
AF
PL-4
PL-2
Didier Linxe
900
AF
PL-4
PL-3
Christian Soutou
1000
SING
PL-4
Henri Alquié
3400
AF
HeuresVol
titre
basnbHVol hautnbHVol
Débutant
0
500
Initié
501
1000
Expert
1001
20000
Tableau 4-37 Exemples d’inéquijointures
Requête Jointure relationnelle
Jointure SQL2
R5
SELECT p1.brevet, p1.nom,
p1.nbHVol, p2.nbHVol "Référence"
FROM Pilote p1, Pilote p2
AND p2.brevet = 'PL-2';
SELECT p1.brevet, p1.nom,
p1.nbHVol, p2.nbHVol "Référence"
FROM Pilote p1
WHERE p2.brevet = 'PL-2';
+--------+------------------+---------+-----------+
| brevet | nom
| nbHVol | Référence |
+--------+------------------+---------+-----------+
| PL-3
| Christian Soutou | 1000.00 |
900.00 |
| PL-4
| Henri Alquié
| 3400.00 |
900.00 |
+--------+------------------+---------+-----------+
Web
WHERE p1.nbHVol > p2.nbHVol
JOIN
Pilote p2 ON p1.nbHVol>p2.nbHVol
