Sobes.tech
Junior — Middle

Hoe verschillen recursieve en niet-recursieve uitdrukkingen in Common Table Expressions (CTE) in SQL?

sobes.tech AI

Antwoord van AI

De Common Table Expression (CTE) in SQL is een tijdelijke resultaat dat in de hoofdquery kan worden gebruikt. Er zijn twee typen CTE's: recursief en niet-recursief.

  • Niet-recursieve CTE: is eenvoudigweg een benoemd tijdelijke gegevensset, gedefinieerd door één query. Het kan worden gebruikt om complexe queries te vereenvoudigen of subqueries opnieuw te gebruiken.

  • Recursieve CTE: is een CTE die naar zichzelf verwijst, waardoor recursieve operaties kunnen worden uitgevoerd, zoals het doorlopen van hiërarchieën of grafen.

Voorbeeld van een niet-recursieve CTE:

WITH RecentOrders AS (
    SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;

Voorbeeld van een recursieve CTE (zoeken van alle ondergeschikten van een werknemer):

WITH RECURSIVE Subordinates AS (
    SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- baas
    UNION ALL
    SELECT e.EmployeeID, e.ManagerID, e.Name
    FROM Employees e
    INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;

Op deze manier maken recursieve CTE's het mogelijk om ketens en hiërarchieën op te bouwen, terwijl niet-recursieve CTE's de query-structuur eenvoudig houden.