sql server - why cte recursive returns just the first row? -


please take @ cte , tell me what's wrong it? returns first row (anchor).

edit: 1 works @ should, wonder what's wrong tables , data!!!

create table menus (menuid uniqueidentifier primary key, menuname nvarchar(100)) create table menuitems (menuitemid uniqueidentifier primary key, pid uniqueidentifier null, menuid uniqueidentifier not null, menuitemname nvarchar(100) not null)  insert menus values ('3ab564a7-1d2c-4c43-91e3-a191016cbe67', 'main')  insert menuitems values ('d3b92d1b-7afa-4e11-af01-9f6a00b1b2a9', '00000000-0000-0000-0000-000000000000', '3ab564a7-1d2c-4c43-91e3-a191016cbe67', 'books') insert menuitems values ('70575c44-1ef8-497f-b7b8-a18300f645d7', '00000000-0000-0000-0000-000000000000', '3ab564a7-1d2c-4c43-91e3-a191016cbe67', 'cds') insert menuitems values ('2d6ed5b3-4c6a-4907-8571-a196009727d7', '00000000-0000-0000-0000-000000000000', '3ab564a7-1d2c-4c43-91e3-a191016cbe67', 'dvds') insert menuitems values ('3a1096e7-5fd2-4f77-9729-a19600973bdf', '2d6ed5b3-4c6a-4907-8571-a196009727d7', '3ab564a7-1d2c-4c43-91e3-a191016cbe67', 'movies') insert menuitems values ('5c2ac1f8-dee0-448b-b538-a19600f0839b', '00000000-0000-0000-0000-000000000000', '3ab564a7-1d2c-4c43-91e3-a191016cbe67', 'cassetes') go  declare @menuid uniqueidentifier set @menuid = '3ab564a7-1d2c-4c43-91e3-a191016cbe67' ;with  cte (menuitemid, pid, lvl)       (     select menuid menuitemid, cast(null uniqueidentifier) pid, 1         menus menuid = @menuid     union     select menuitems.menuitemid             , pid = case menuitems.pid when '00000000-0000-0000-0000-000000000000' @menuid else menuitems.pid end             , cte.lvl + 1          menuitems             inner join cte on cte.menuitemid = menuitems.pid         menuitems.menuid = @menuid     ) select * cte 

edit: result should this:

3ab564a7-1d2c-4c43-91e3-a191016cbe67    null    1 d3b92d1b-7afa-4e11-af01-9f6a00b1b2a9    3ab564a7-1d2c-4c43-91e3-a191016cbe67    2 70575c44-1ef8-497f-b7b8-a18300f645d7    3ab564a7-1d2c-4c43-91e3-a191016cbe67    2 2d6ed5b3-4c6a-4907-8571-a196009727d7    3ab564a7-1d2c-4c43-91e3-a191016cbe67    2 5c2ac1f8-dee0-448b-b538-a19600f0839b    3ab564a7-1d2c-4c43-91e3-a191016cbe67    2 3a1096e7-5fd2-4f77-9729-a19600973bdf    2d6ed5b3-4c6a-4907-8571-a196009727d7    3 

thanks in advance!

kardo

the problem seems in

 inner join cte on cte.menuitemid = menuitems.pid 

because menuitemid , pid not match.

provide table structure , sample data further analysis , simulate problem actually.


Comments

Popular posts from this blog

ios - iPhone/iPad different view orientations in different views , and apple approval process -

java Extracting Zip file -

C# WinForm - loading screen -