Hierarchische Struktur mit unbekannter Tiefe als SQL-Query?
am 05.10.2006 10:15:14 von Markus ErnstHallo
In meiner Applikation lassen sich bestimmte Dinge wie beispielsweise
Kategorien oder Seiten beliebig verschachteln. Dies habe ich zentral in
einer Tabelle "entitaet" geregelt, etwa so:
Tabelle "entitaet":
| id | parent | publiziert |
+----+--------+------------+
| 4 | 0 | 1 |
| 5 | 4 | 1 |
| 6 | 4 | 1 |
| 7 | 4 | 0 |
| 8 | 6 | 1 |
| 9 | 6 | 1 |
| 10 | 8 | 1 |
usw.
Tabelle "kategorie":
| id | name |
+----+-----------------------+
| 5 | Flugzeuge |
| 6 | Fahrzeuge |
| 7 | Möbel |
| 8 | Zweirädrige Fahrzeuge |
| 9 | Vierrädrige Fahrzeuge |
| 10 | Fahrräder |
usw.
Alle Kind-IDs einer Kategorie zu holen ist einfach:
SELECT k.id
FROM kategorie k
LEFT JOIN entitaet e ON k.id=e.id
WHERE e.parent=4 AND e.publiziert=1
ORDER BY k.name
Nun brauche ich manchmal auch die IDs aller Kinder und Kindes-Kinder. Da
die Tiefe der Verschachtelung nicht bekannt ist, habe ich dies bisher im
PHP gelöst, indem ich durch die Kind-IDs loope und zu jeder wiederum die
Kind-IDs hole, solange das Resultat der Abfrage nicht leer ist. Aber ich
frage mich schon die ganze Zeit, ob sich das nicht auch direkt in der
SQL-Query lösen liesse? (MySQL 4.0 und 4.1)
Für Hinweise oder Anregungen bin ich dankbar!
--
Markus