Hallo Forumler!
Ich habe eine knifflige Aufgabe für alle Programmier-Freaks unter euch.
In einer SQL-DB liegen wie folgt Daten (sortiert nach id):
tabelle1
+-------+-------+
| id | parent|
+-------+-------+
| 1 | 5 |
| 2 | 8 |
| 3 | 1 |
| 4 | 8 |
| 5 | 0 |
| 6 | 8 |
| 7 | 2 |
| 8 | 5 |
| 9 | 2 |
| 10 | 1 |
+-------+-------+
Die rechte Spalte zeigt jeweils eine id als Elternobjekt, wobei '0' der Ursprung ist.
Das heißt z. B., 1 und 8 sind Kinder von 5.
Oder z. B. 2, 4 und 6 sind Kinder von 8.
Die Daten sollten jetzt mit Perl so umstrukturiert werden, dass das Ergebnis wie folgt lautet:
tabelle2
+-------+-------+
| level | id |
+-------+-------+
| 0 | 5 |
| 1 | 1 |
| 2 | 3 |
| 2 | 10 |
| 1 | 8 |
| 2 | 2 |
| 3 | 7 |
| 3 | 9 |
| 2 | 4 |
| 2 | 6 |
+-------+-------+
Daraus kann ich z. B. folgenden TreeView basteln (was dann nicht das Problem sein sollte):
0 1 2 3
----------
5
|
+- 1
| |
| +- 3
| |
| +- 10
|
+- 8
|
+- 2
| |
| +- 7
| |
| +- 9
|
+- 4
|
+- 6
Die Frage ist nun, wie komme ich von tabelle1 zu tabelle2?
Ich habe zwar schon diverse Lösungsansätze, aber der Groschen ist noch nicht richtig gefallen.
Im Forum habe ich natürlich auch schon gesucht :-) aber auch http://forum.de.selfhtml.org/archiv/2004/3/75206/#m433175, was ein ähnliches Problem beschreibt, hat den Groschen nicht in Bewegung versetzt.
Hat jemand von euch einen Lösungsansatz?
Danke für jeden Tipp und
viele Grüße
Horst