Hierarchical menu ordering via Sql Server
DECLARE @Menus TABLE (
MENU_ITEM_ID INT,
TITLE VARCHAR(15),
PARENT_MENU_ITEM_ID INT
)
INSERT INTO @Menus(MENU_ITEM_ID , TITLE, PARENT_MENU_ITEM_ID)
SELECT 2,’Andrew’,NULL UNION ALL
SELECT 1,’Nancy’,2 UNION ALL
SELECT 3,’Janet’,2 UNION ALL
SELECT 4,’Margaret’,2 UNION ALL
SELECT 5,’Steven’,2 UNION ALL
SELECT 8,’Laura’,2 UNION ALL
SELECT 6,’Michael’,5 UNION ALL
SELECT 7,’Robert’,5 UNION ALL
SELECT 9,’Anne’,5
;with MenuHierarchy as
(
select MENU_ITEM_ID,TITLE,0 as [Level],
cast( ‘/’ + TITLE + ‘/’ as varchar(max)) as FUllTITLE from @Menus where PARENT_MENU_ITEM_ID is null
union all
select E.MENU_ITEM_ID,E.TITLE,[Level] + 1 as [Level],
cast(FUllTITLE + ‘/’ + E.TITLE + ‘/’ as varchar(max))
from MenuHierarchy c
inner join @Menus E on C.MENU_ITEM_ID = E.PARENT_MENU_ITEM_ID)
select replicate(‘-‘,4*Level) + TITLE as [Name],[Level]
from MenuHierarchy EH
Group by TITLE,[Level],[FUllTITLE]
order by FUllTITLE
Blog Stats
- 17,613 hits