You are here: Website navigation hierarchy with SQL Server 2005 « MsSQL Server « IT news, forums, messages
Website navigation hierarchy with SQL Server 2005

Posted by Brian on 03/24/06 00:20

Hi

I'm trying to convert some verbose SQL Server 2000 T-SQL code that uses
lots temp tables and the like into a SQL Server 2005 only version,
possibly using CTE.

What I want to achieve is a menu like that on
http://www.cancerline.com/cancerlinehcp/9898_9801_6_3_3.aspx

Notice how you have the top level menu items, and then child nodes
expanded down to the low level page that link sends you to.

Table sql:

CREATE TABLE [dbo].[NavigationNode](
[NodeId] [int] primary key nonclustered,
[Text] [nvarchar](150) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[AlternativeText] [nvarchar](250) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL,
[Level] [int] NULL,
[ParentNodeId] [int] constraint fk_parent_navnode
foreign key references [NavigationNode] ([NodeId])
)

Table data:

1 Home NULL 1 NULL
2 Solutions NULL 1 1
3 Solutions child1 NULL 2 2
4 Solutions child2 NULL 2 2
5 Contact NULL 1 1
6 solutions child1 child1 NULL 3 3
7 solutions child1 child2 NULL 3 3
8 solutions child1 child3 NULL 3 3
9 solutions child1 child4 NULL 3 3
10 contact child1 NULL 2 5

I have started to write some code with the common table expression
syntax:

declare @root int;
set @root = 2;

WITH Nav([NodeId],[ParentNodeId], [Text], [Level]) AS
(
SELECT [NodeId], [ParentNodeId], [Text], [Level]
FROM [dbo].[NavigationNode]
WHERE [ParentNodeId] = @root

UNION ALL

SELECT n1.[NodeId], n1.[ParentNodeId], n1.[Text], n1.[Level]
FROM [dbo].[NavigationNode] n1
INNER JOIN Nav n2
ON n1.[ParentNodeId] = n2.[NodeId]

)
SELECT *
FROM Nav

Which returns:

3 2 Solutions child1 2
4 2 Solutions child2 2
6 3 solutions child1 child1 3
7 3 solutions child1 child2 3
8 3 solutions child1 child3 3
9 3 solutions child1 child4 3

However I would prefer to the childnode, and then get parents of that
child recursively. Doing that would leave me with a result set that
could add the top level menu items to and have all the data required.
Any help is greatly appreciated.

-Brian

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация