Quelle est la différence entre les expressions récursives et non récursives dans les expressions de table communes (CTE) en SQL?
sobes.tech IA
Réponse de l'IA
L’expression de table commune (CTE) en SQL est un résultat temporaire pouvant être utilisé dans la requête principale. Il existe deux types de CTE : récursifs et non récursifs.
-
CTE non récursif : il s’agit simplement d’un ensemble de données temporaires nommé, défini par une seule requête. Il peut être utilisé pour simplifier des requêtes complexes ou pour réutiliser une sous-requête.
-
CTE récursif : c’est un CTE qui se réfère à lui-même, permettant d’effectuer des opérations récursives, comme parcourir des hiérarchies ou des graphes.
Exemple de CTE non récursif :
WITH RecentOrders AS (
SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;
Exemple de CTE récursif (recherche de tous les subordonnés d’un employé) :
WITH RECURSIVE Subordinates AS (
SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- chef
UNION ALL
SELECT e.EmployeeID, e.ManagerID, e.Name
FROM Employees e
INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;
Ainsi, les CTE récursifs permettent de construire des chaînes et des hiérarchies, tandis que les non récursifs simplifient simplement la structure de la requête.