© Éditions Eyrolles
137
chapitre n° 4
Interrogation des données
Sous-interrogation dans la clause FROM
Introduite dans SQL2, la possibilité de construire dynamiquement une table dans la clause
FROM d’une requête est opérationnelle sous MySQL.
SELECT listeColonnes
FROM table1 aliasTable1, (SELECT… FROM table2 WHERE…) aliasTable2
[ WHERE (conditionsTable1etTable2) ];
Considérons la table suivante. Le but est d’extraire le pourcentage partiel de pilotes par
compagnie. Dans notre exemple, il y a 5 pilotes dont 3 dépendent de 'AF'. Pour cette compagnie le pourcentage partiel de pilotes est de 3/5 soit 60 %.
La requête suivante construit dynamiquement deux tables (alias a et b) dans la clause FROM
pour répondre à cette question :
Sous-interrogations synchronisées
Une sous-interrogation est synchronisée si elle manipule des colonnes d’une table du niveau
supérieur. Une sous-interrogation synchronisée est exécutée une fois pour chaque enregistreFigure 4-18 Table Pilote
Pilote
brevet
nom
nbHVol compa
PL-1
Pierre Lamothe
450
AF
PL-2
Didier Linxe
900
AF
PL-3
Christian Soutou
1000
SING
PL-4
Henri Alquié
3400
AF
PL-5
Michel Castaings
Tableau 4-43 SELECT dans un FROM
Requête et tables évaluées dans le FROM
Résultat
SELECT a.compa "Comp", a.nbpil/b.total*100 "%Pilote"
FROM
a,
b;
+------+---------+
| Comp | %Pilote |
+------+---------+
| NULL | 20.0000 |
| AF
| 60.0000 |
| SING | 20.0000 |
+------+---------+
(SELECT compa, COUNT(*) nbpil
FROM Pilote GROUP BY compa)
(SELECT COUNT(*) total FROM Pilote)
a
compa nbpil
AF
3
SING 1
1
b
total
5
137
chapitre n° 4
Interrogation des données
Sous-interrogation dans la clause FROM
Introduite dans SQL2, la possibilité de construire dynamiquement une table dans la clause
FROM d’une requête est opérationnelle sous MySQL.
SELECT listeColonnes
FROM table1 aliasTable1, (SELECT… FROM table2 WHERE…) aliasTable2
[ WHERE (conditionsTable1etTable2) ];
Considérons la table suivante. Le but est d’extraire le pourcentage partiel de pilotes par
compagnie. Dans notre exemple, il y a 5 pilotes dont 3 dépendent de 'AF'. Pour cette compagnie le pourcentage partiel de pilotes est de 3/5 soit 60 %.
La requête suivante construit dynamiquement deux tables (alias a et b) dans la clause FROM
pour répondre à cette question :
Sous-interrogations synchronisées
Une sous-interrogation est synchronisée si elle manipule des colonnes d’une table du niveau
supérieur. Une sous-interrogation synchronisée est exécutée une fois pour chaque enregistreFigure 4-18 Table Pilote
Pilote
brevet
nom
nbHVol compa
PL-1
Pierre Lamothe
450
AF
PL-2
Didier Linxe
900
AF
PL-3
Christian Soutou
1000
SING
PL-4
Henri Alquié
3400
AF
PL-5
Michel Castaings
Tableau 4-43 SELECT dans un FROM
Requête et tables évaluées dans le FROM
Résultat
SELECT a.compa "Comp", a.nbpil/b.total*100 "%Pilote"
FROM
a,
b;
+------+---------+
| Comp | %Pilote |
+------+---------+
| NULL | 20.0000 |
| AF
| 60.0000 |
| SING | 20.0000 |
+------+---------+
(SELECT compa, COUNT(*) nbpil
FROM Pilote GROUP BY compa)
(SELECT COUNT(*) total FROM Pilote)
a
compa nbpil
AF
3
SING 1
1
b
total
5
