Table dérivée (sous-requête) avec MySQL
MySQL a ajouté le support pour les tables dérivées (également appelées sous-requête). En termes très simples, une table dérivée est une table virtuelle renvoyée à partir d’une instruction SELECT. Ce concept est similaire aux tables temporaires, mais l’utilisation de tables dérivées dans vos instructions SELECT est beaucoup plus simple, car elles ne nécessitent pas toutes les étapes que nécessitent les tables temporaires.
L’image suivante illustre une requête qui utilise une table dérivée:
Exemple:
Dans l’exemple ci-dessous, nous avons deux tables, à savoir « Clients » et « Commandes », qui contiennent les données suivantes:
Maintenant, la requête suivante produira une table dérivée:
Select AVG(T) FROM( SELECT NumCommande, SUM(Totale) T FROM Commandes GROUP BY NumCommande )AS totales;
La table dérivée ci-dessus renvoie le prix total de chaque commande, puis la requête externe renvoie la moyenne.
Nous devons obligatoirement fournir un alias pour toutes les tables dérivées. Dans ce cas, nous avons donné à notre table dérivée l’alias « totales ».
Si nous n’exécutons que la sous-requête, nous pouvons voir le résultat de la table dérivée.
SELECT NumCommande, SUM(Totale) T FROM Commandes GROUP BY NumCommande;