, , , . , GetAncestor GetDescendant. - CTE GetAncestor GetDescendant .
Here is an example (using the menu hierarchy):
WITH MenuCTE(MenuKey, ParentMenuKey, MenuName) AS
(
SELECT MenuKey, ParentMenuKey, MenuName FROM Menu WHERE MenuKey = 1
UNION ALL
SELECT m.MenuKey, m.ParentMenuKey, m.MenuName FROM Menu m
INNER JOIN MenuCTE r ON m.ParentMenuKey = r.MenuKey
)
SELECT MenuKey, ParentMenuKey, MenuName FROM MenuCTE
This article should help (example from here):
http://www.infoq.com/news/2007/10/CTE
source
share