© Éditions Eyrolles
115
chapitre n° 4
Interrogation des données
Exemple
Étudions à présent chaque opérateur à partir de l’exemple composé des deux tables suivantes :
q
AvionsdeAF(immat CHAR(6), typeAvion CHAR(10), nbHVol DECIMAL(10,2))
q
AvionsdeSING(immatriculation CHAR(6), typeAv CHAR(10), prixAchat
DECIMAL(14,2))
Il est vraisemblable que seules les deux premières colonnes doivent être comparées. Bien que
permises par MySQL, la programmation de l’union, l’intersection ou la différence entre les
prix des avions et les heures de vol (deux colonnes numériques) ne seraient pas valides d’un
point de vue sémantique.
Intersection
L’intersection entre deux ensembles homogènes se programme à l’aide d’une requête du type
SELECT DISTINCT ensemble1 FROM Table1 WHERE ensemble1 IN (SELECT ensemble2
FROM Table2). Comme l’opérateur d’intersection, cette requête est commutative (Table1 peut
jouer le rôle de Table2, et ensemble1 celui d’ensemble2).
Notez qu’à l’affichage le nom des colonnes est donné par la première requête. La deuxième
fait apparaître deux colonnes dans le SELECT.
Figure 4-9 Tables pour les opérateurs ensemblistes
Web
AviondeAF
immat
typeAvion
nbHVol
F-WTSS
Concorde
6570
F-GLFS
A320
3500
F-GTMP
A340
AviondeSING
immatriculation typeAv
PrixAchat
S-ANSI
A320
104 500
S-AVEZ
A320
156 000
S-SMILE
A330
198 000
F-GTMP
A340
204 500
Tableau 4-28 Exemples d’intersections
Besoin
Requête
Quels sont les types d’avions que les
deux compagnies exploitent en commun ?
SELECT
FROM AvionsdeAF
WHERE typeAvion IN
(SELECT typeAv FROM AvionsdeSING);
+-----------+
| typeAvion |
+-----------+
| A320
|
| A340
|
+-----------+
Web
DISTINCT typeAvion
Précédent

- 137/418

Suivant