Mailinglisten-Archive |
Hi Dennis, Am Freitag, 30. November 2007 schrieb Dennis Dohle: > vielleicht hat ja jemand einen schnellen Ansatz für meine Frage. > > Ich habe eine mySQL-Tabelle, in der ich Hauptkategorie und > Unterkategorien zusammen darstelle. In dem Datenbankfeld "level0" > wird bei den Unterkategorien die ID der Hauptkategorie gespeichert. > Nichts Wildes also! In meiner Listendarstellung wird nun klassisch > folgendes gemacht: > > $query1 = "SELECT * FROM kategorien WHERE level0 IS NULL"; anstatt NULL würde ich für die oberste Ebene 0 nehmen. > while ... > { > $query2 = "SELET * FROM kategorien WHERE level0 = ... > while ... > { > > } > } > > Kann ich das in einer Abfrage lösen? > Bin ich da wieder bei dem Thema Nested Sets? Möglichkeit 1 wäre, daß Du ein Feld in der Datenbanktabelle hast, welches neben level0 noch ein Feld mit dem Hierarchiepfad (z.B. "0001| 0003|0004") enthält. Dann könntest Du diese Angabe beim SELECT hinzuziehen und damit auf einen Schlag alle Einträge einer Ebene inklusive aller Einträge der direkten Unterebene (und weiterer Unterebenen) ziehen. Möglichkeit 2 wäre, daß Du einfach einmal alle Einträge aus der Tabelle ziehst, Dir daraus einen mehrdimensionalen Array baust, der die Struktur abbildet, das Ergebnis cachst und dann nur auf den gecachten Array zugreifst. Diese Lösung eignet sich allerdings nur bei einer handhabbaren Menge von Einträgen. Viele Grüße, Lutz
php::bar PHP Wiki - Listenarchive