Archive

Posts Tagged ‘Hierarchical menu’

Hierarchical menu ordering via Sql Server

March 15, 2010 Leave a comment

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