I want to retrieve the parentid of an id, if that parentid has a parent again retrieve it, and so on. Kind of hierarchy table.
id----parentid 1-----1 5-----1 47894--5 47897--47894 am new to sql server and tried, some queries like:
with name_tree as  (    select id, parentid    from Users    where id = 47897 -- this is the starting point you want in your recursion    union all    select c.id, c.parentid    from users c    join name_tree p on p.id = c.parentid  -- this is the recursion )  select * from name_tree; It is giving me only one row. and also I want to insert these records into a temporary table variable. How can I do this. thanks in advance. sorry for asking the simple question(though not to me)
level + 1 FROM pc a JOIN cte c ON a. parent = c. child ) SELECT distinct parent, child , level FROM cte order by level, parent; This will give you all descendants and the level.
The UNION ALL command combines the result set of two or more SELECT statements (allows duplicate values).
In database management, a relationship between two files. The parent file contains required data about a subject, such as employees and customers. The child is the offspring; for example, an order is the child to the customer, who is the parent.
Try this to get all parents of a child
;with name_tree as  (    select id, parentid    from Users    where id = 47897 -- this is the starting point you want in your recursion    union all    select C.id, C.parentid    from Users c    join name_tree p on C.id = P.parentid  -- this is the recursion    -- Since your parent id is not NULL the recursion will happen continously.    -- For that we apply the condition C.id<>C.parentid      AND C.id<>C.parentid  )  -- Here you can insert directly to a temp table without CREATE TABLE synthax select * INTO #TEMP from name_tree OPTION (MAXRECURSION 0)  SELECT * FROM #TEMP Click here to view result
EDIT :
If you want to insert into a table variable, you can do something like:
-- Declare table varialbe Declare @TABLEVAR table (id int ,parentid int)   ;with name_tree as  (    select id, parentid    from #Users    where id = 47897 -- this is the starting point you want in your recursion    union all    select C.id, C.parentid    from #Users c    join name_tree p on C.id = P.parentid  -- this is the recursion    -- Since your parent id is not NULL the recursion will happen continously.    -- For that we apply the condition C.id<>C.parentid      AND C.id<>C.parentid  )  -- Here you can insert directly to table variable INSERT INTO @TABLEVAR select * from name_tree OPTION (MAXRECURSION 0)  SELECT * FROM @TABLEVAR Click here to view result
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With