Jag vill ha hela "trädet" med noder från den node som är vald, dvs om jag väljer node 36 så ska den kolla vilka noder som har den som parent och vilka noder som finns ovanför node 36. Har försökt mig på detta men får det inte riktigt att funka, stöter på problem då jag ska gå uppåt i hierarkin.
Min stored procedure
DECLARE @currentnodeparent uniqueidentifier
SET @currentnodeparent = (SELECT node_parent FROM Nodes WHERE node_id = @nodeid)
SELECT * FROM Nodes WHERE node_id = @nodeid
SELECT * FROM Nodes WHERE node_parent = @nodeid
WHILE @currentnodeparent <> null
BEGIN
SELECT * FROM Nodes WHERE node_id = @currentnodeparent
SET @currentnodeparent = (SELECT node_parent FROM Nodes WHERE node_id = @currentnodeparent)
END
Någon som har någon lösning/annat sätt att göra det på?
btw, finns det någon nackdel med att använda uniqueidentifier? använder den för att undvika att det ska bli problem vid ihopslagningar av data osv.
Hum, den var inte riktigt vad jag ville ha, vill ha så att noderna över väljs, inte de som ligger under. Har försökt att göra om den kod som fanns i exemplet men får inte till det. Förslag?
Nu är jag tillbaka fast denna gång måste jag använda uniqieidentifier. Försökte med samma kod men #stack innehåller ingen data.
DECLARE @i int
DECLARE @current uniqueidentifier
SET @current = '{011DAF52-C53D-4017-89C7-603EE1A4DE5C}'
CREATE TABLE #stack (node_guid uniqueidentifier, node_name nvarchar(50), node_position int)
WHILE @current <> null
BEGIN
INSERT #stack
SELECT node_guid, node_name, @i FROM Nodes WHERE node_guid = @current
SELECT @current = node_parentid FROM Nodes WHERE node_guid = @current
SET @i = (@i + 1)
END
SELECT * FROM #stack ORDER BY node_position DESC
SELECT @current
DROP TABLE #stack