Dziś czytając kolejny artykuł w MSDN Magazine natrafiłem na ciekawy sposób wykorzystania CTE ( Common Table Expression ) do rekursywnych zapytań. Dzięki temu można dla danych hierarchicznych wykonać jedno zapytań, które zwróci wszystkie dane, bez tworzenia pętli. W artykule opisane jest, na jakiej zasadzie działa takie zapytanie oraz jakie są warunki stopu.

Dzięki temu od dziś będę mógł tworzyć sobie takie hierarchiczne zapytania:

;WITH TeamTable(ID,Alias) AS

(

 SELECT ID,Alias FROM [doTeam-View] WHERE Alias = ‘DSM’

 UNION ALL

 SELECT t.ID,t.Alias FROM [doTeam-View] t JOIN TeamTable tt ON tt.ID = t.ParentTeam

)

SELECT * FROM TeamTable