Quantcast
Viewing all articles
Browse latest Browse all 12890

With CTE, how do i get a list of parents

I can figure out how to get children from a cte, but can't figure how to get parents.

Here is sample code:

declare @Forums table
(
IDINT,
    NameNVARCHAR(50),
    ParentINT
 )
INSERT INTO @Forums SELECT 1, 'Root', null
INSERT INTO @Forums SELECT 2, 'lvl 1a', 1
INSERT INTO @Forums SELECT 3, 'lvl 1b', 1
INSERT INTO @Forums SELECT 4, 'lvl 2a', 2
INSERT INTO @Forums SELECT 5, 'lvl 2b', 2
INSERT INTO @Forums SELECT 6, 'lvl 3a', 4
INSERT INTO @Forums SELECT 7, 'lvl 3b', 4

--With CTE get children of ID=4,NAME=lvl 2a
--Output:ROOTIDID
--46
--47
;WITH CTE AS (
SELECT RootID = ID, ID
FROM @Forums
WHERE ID=4
UNION ALL
SELECT CTE.RootID, f.ID
FROM @Forums f
INNER JOIN CTE ON f.Parent = CTE.ID
)
SELECT RootID,ID FROM CTE WHERE ID<>4


--With CTE get parents of ID=4,NAME=lvl 2a
--Output:ROOTIDID
--42
--41


Viewing all articles
Browse latest Browse all 12890

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>