/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Hierakisk output [MSSQL] (Lang)
Fra : Kasper Katzmann


Dato : 15-11-03 18:55

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



 
 
Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste