sql - one to many join on 3 levels all on the same table -
i have table pages, these pages have parents pages in same table.
for examples sake table looks like:
table: pages pageid :key pageparent :foreign key pagename
now question sql when creating menustructure like:
pageid pageparent pagename 1 null home 2 1 page_under_home1 5 2 page_under_pageid2_1 6 2 page_under_pageid2_2 4 1 page_under_home2 5 4 page_under_pageid4_1 7 5 page_under_pageid5_1 6 4 page_under_pageid4_2 9 6 page_under_pageid6_1 10 6 page_under_pageid6_2 8 1 page_under_home3 11 1 page_under_home4 12 11 page_under_pageid11_1 13 12 page_under_pageid12_1
i have this:
select p1.pageid, p1.pagename, p1.pageparent, p2.pagename expr1 dbo.pages p1 full outer join (select pageid, pagename dbo.pages (pageparent null)) p2 on p2.pageid = p1.pageparent
but doesnt create output want , think i'm going @ wrong way...
edit:
this have:
with pagesmenu(pageid, pageparent, pagename) ( select pageid, pageparent, pagename dbo.pages (pageparent null) , (pageisvisible = 'true') union select b.pageid, b.pageparent, b.pagename pagesmenu inner join dbo.pages b on a.pageid = b.pageparent ) select pageid, pageparent, pagename pagesmenu
and seems work not recurs, first recursion seems work looks doesn't second time.
result:
pageid pageparent pagename 3 null home 1 3 test 4 3 test 5 4 test 6 4 test 7 4 test 8 5 test <---wrong 2 1 test <---wrong
here ms link on cte's: http://msdn.microsoft.com/en-us/library/ms186243.aspx
Comments
Post a Comment