Sous-requêtes de ligne
<<<
Sous-requêtes dans la clause FROM Erreurs de sous-requêtes
>>>

14.1.8 Sous-sélections ( SubSELECT )
14.1 Manipulation de données : SELECT , INSERT , UPDATE , DELETE
14 Syntaxe des commandes SQL
 Manuel de Référence MySQL 4.1 : Version Française

Les sous-requêtes comme opérateur scalaire
Comparaisons avec les sous-requêtes
Sous-requêtes avec les clauses ANY , IN et SOME
Sous-requêtes avec ALL
Sous-requêtes corrélées
EXISTS et NOT EXISTS
Sous-requêtes de ligne
->Sous-requêtes dans la clause FROM
Erreurs de sous-requêtes
Optimisation des sous-requêtes
Se passer des sous-requêtes avec les premières versions de MySQL

14.1.8.8 Sous-requêtes dans la clause FROM

Les sous-requêtes sont valides dans la clause FROM d'une commande SELECT . Voici une syntaxe que vous allez rencontrer :


SELECT ... FROM (<subquery>) AS <name> ...
La clause AS <name> est obligatoire, car les tables de la clause FROM doivent avoir un nom. Toutes les colonnes de la sous-requête <subquery> doivent avoir des noms distincts. Vous pourrez trouver cette syntaxe décrite ailleurs dans ce manuel, sous le nom de ``tables dérivées''.Par exemple, supposons que vous avons cette table :

CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);
Comment utiliser la fonctionnalité de sous-requêtes dans la clause FROM , avec cette table d'exemple :

INSERT INTO t1 VALUES (1,'1',1.0);
INSERT INTO t1 VALUES (2,'2',2.0);
SELECT sb1,sb2,sb3
       FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb
       WHERE sb1 > 1;
Résultat : 2, '2', 4.0.

Voici un autre exemple : supposons que vous voulez connaître la moyenne de la somme pour un groupe de table. Ceci ne fonctionnera pas :


SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1;
Mais cette requête-ci vous donnera les informations nécessaires :

SELECT AVG(sum_column1)
       FROM (SELECT SUM(column1) AS sum_column1
             FROM t1 GROUP BY column1) AS t1;
Notez que les colonnes sont nommées à partir de la sous-requête : (sum_column1) est reconnue dans la requête externe.Actuellement, les sous-requêtes en clause FROM ne peuvent pas être corrélées.

<< Sous-requêtes dans la clause FROM >>
Sous-requêtes de ligne Sous-sélections ( SubSELECT ) Erreurs de sous-requêtes