phpbar.de logo

Mailinglisten-Archive

[php] PHP/mySQL zwei Ebenen in einer Abfrage darstellen

[php] PHP/mySQL zwei Ebenen in einer Abfrage darstellen

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Fre Nov 30 11:33:00 CET 2007


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