Quand une expression de table commune (CTE) est-elle nécessaire ?
Bien que les tables dérivées puissent sembler suffisantes dans tous les scénarios, les expressions de table communes ( CTE) offrent des avantages distincts dans certaines circonstances.
Limitations des valeurs dérivées et temporaires Tables
Considérez un scénario dans lequel les données doivent être jointes plusieurs fois. L'utilisation d'instructions SELECT régulières ou de tables dérivées entraînerait la réplication de la syntaxe de jointure pour chaque instance, augmentant ainsi la verbosité du code. Cependant, les CTE vous permettent de définir une table réutilisable qui peut être référencée plusieurs fois dans la requête.
Exemple
Supposons que vous ayez une table « Clients » et que vous souhaitiez trouver des clients qui ont passé plusieurs commandes.
Utiliser CTE :
WITH CustomerOrders AS ( SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID ) SELECT * FROM Customers JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID WHERE OrderCount > 1;
Utilisation d'une table dérivée :
(SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID) AS CustomerOrders SELECT * FROM Customers JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID WHERE OrderCount > 1;
Comme vous pouvez le constater, l'approche CTE élimine le besoin de définir l'alias de la table dérivée ("CustomerOrders") deux fois.
Autres CTE Avantages
Outre la réutilisabilité, les CTE offrent des avantages supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!