Jeg har følgende tabel(PageContent) i databasen(katzmann):
PK_PageID | PK_ParentID | Title
---------------------------------------------------
1 | 0 | Forsiden
2 | 1 | Om firmaet
3 | 1 | Ledige stillinger
4 | 0 | Kurser
5 | 4 | Webkurser
6 | 5 | ASP
osv. osv.
Jeg vil så gerne kunne trække data ud i hierakisk orden.
Eksempel:
Forsiden
Om firmaet
Ledige stillinger
Kurser
Webkurser
ASP
ASP og databaser
HTML
CSS
Officekurser
Word
PowerPoint
Jeg fandt det her på MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/acdata/ac_8_qd_14_5yk3.asp
som jeg så har skrevet lidt om:
CREATE PROCEDURE expand (@current char(20)) AS
SET NOCOUNT ON
DECLARE @lvl int, @line char(20)
CREATE TABLE #stack (item char(20), lvl int)
INSERT INTO #stack VALUES (@current, 1)
SELECT @lvl = 1
WHILE @lvl > 0
BEGIN
IF EXISTS (SELECT * FROM #stack WHERE lvl = @lvl)
BEGIN
SELECT @current = item
FROM #stack
WHERE lvl = @lvl
SELECT @line = space(@lvl - 1) + @current
PRINT @line
DELETE FROM #stack
WHERE lvl = @lvl
AND item = @current
INSERT #stack
SELECT PK_PageID, @lvl + 1
FROM PageContent
WHERE ParentID = @current
IF @@ROWCOUNT > 0
SELECT @lvl = @lvl + 1
END
ELSE
SELECT @lvl = @lvl - 1
END -- WHILE
Jeg fyrer den så af med:
EXEC expand ''
Resultat:
21
14
12
4
6
9
8
11
10
5
1
22
20
13
3
2
Det er som sådan rigtigt, hierakiet holder.
Nu er spørgsmålet så bare, hvordan får jeg lavet et output i ASP, der viser
feltet [Title] fra tabellen [PageContent] istedet for feltet [PK_PageID].
Nogen der kan hjælpe?
--
Mvh
Kasper Katzmann
Katzmann Consulting
http://www.katzmann.dk