Hello,
Wenn die Anzahl deiner Sätze pro Ebene begrenzbar ist, kommst Du sogar vollständig ohne Rekursion aus: mit gezielter Denormalisierung.
Schlüsselfeld sehr lang
0001.
0001.0001.
0001.0002.
0001.0001.0001
0001.0001.0001.0001
0002.
0002.0001.0001.
0002.0001.0002.
0002.0001.0003.
0002.0002.0001.
0002.0002.0002.
usw.
Ich denke, du siehst, wie die Begrenzug der Nummernkreise pro Ebene die Rekursion vermeiden hilft.
Es lassen sich so sofort alle Eltern und Kinder _in_einem_Statement_ besorgen.
Angenommen, Du hast das Child
0001.0001.0001.0001
und möchtest nun den kürzesten Weg zur Wurzel zurückverfolgen, dann muss der Wert in der Datenbank einfach immer mit dem entprechenden linken Teil der Child-ID übereinstimmen.
Pseudeocode:
select ID from $table where ID=left($child(length(trim((ID)));
oder:
select ID from $table where locate(trim(ID),$child)=1;
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau