Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
Delphi 7 Enterprise
|
Re: [PHP] Datensätze als Baum darstellen
2. Mär 2008, 23:13
Hättest du dich mit meinem erwähnten Link beschäftigt, dann wäre das für dich kein Problem gewesen...
SQL-Code:
CREATE PROCEDURE `proc_GetParents`(NodeID INTEGER)
BEGIN
DECLARE _Depth INT DEFAULT 1;
DECLARE _Done INT DEFAULT 0;
CREATE TEMPORARY TABLE tmpTable (
id INT PRIMARY KEY, parentid INT, Depth INT, NodePath VARCHAR(1000)
) TYPE=HEAP;
CREATE TEMPORARY TABLE tmpTable2 (
id INT PRIMARY KEY, parentid INT, Depth INT, NodePath VARCHAR(1000)
) TYPE=HEAP;
INSERT tmpTable (id, parentid, Depth, NodePath)
SELECT id, parentid, _Depth, reihenfolge
FROM nodes
WHERE id = NodeID;
IF ROW_COUNT() = 0 THEN
SET _Done = 1;
END IF;
WHILE _Done = 0 DO
SET _Depth = _Depth + 1;
INSERT tmpTable2 (id, parentid, Depth, NodePath)
SELECT t.id, t.parentid, _Depth, CONCAT(x.NodePath, '|', Reihenfolge)
FROM nodes t
INNER JOIN tmpTable x
ON t.id = x.parentid
WHERE x.Depth = _Depth-1;
IF ROW_COUNT() = 0 THEN
SET _Done = 1;
END IF;
INSERT tmpTable
SELECT *
FROM tmpTable2;
DELETE FROM tmpTable2;
END WHILE;
SELECT t.id, t.parentid, t.bez, x.Depth, x.NodePath
FROM nodes t
INNER JOIN tmpTable x
ON t.id = x.id
ORDER BY x.NodePath DESC;
DROP TEMPORARY TABLE tmpTable;
DROP TEMPORARY TABLE tmpTable2;
END
Aber ich vermute, du möchtest das so nicht lösen. Schade, so geht das richtig leicht und schnell. Das ist das was alcaeus auch vorschlägt, ich habe es dir sogar schon für MySQL realisiert.
naja egal.
Gruss
Thorsten
|
|
Zitat
|