phpbar.de logo

Mailinglisten-Archive

[php] Nested Sets "intelligent" auslesen

[php] Nested Sets "intelligent" auslesen

Gereon Kremer gereon.kremer at gmail.com
Son Nov 19 19:37:55 CET 2006


Hallo PHP'ler,

Wir (Yannik und Ich...) suchen im moment nach einer schlauen Möglichkeit
ein (relativ großes und dynamisches) Menü aufzubauen.
Da es sich nur extrem selten, aber recht häufig abgerufen wird, hatten
wir die "Nested Sets" ins Auge gefasst.

Das funktioniert auch eigentlich schon recht gut.
Den kompletten Baum lassen wir uns ausgeben mit

SELECT n.title,COUNT(*)-1 AS level FROM kategorien AS n,kategorien AS p
WHERE n.links BETWEEN p.links AND p.rechts GROUP BY n.links ORDER BY n.links

nun stellt sich aber folgendes Problem:
Da der Baum ziemlich groß werden kann (min. mehrere hundert Einträge)
können wir nicht alles ausgeben.

Idee war folgendes:
Wir geben nur alle Knoten vom Root bis zum selektieren (ID haben wir)
und jeweils deren Brüder sowie die direkten Kinder des selektieren aus.

Mal anschaulich...wir haben diesen Baum (als Baumstruktur):

1
>2
>>3
>>>4
>>>5
>>>>6
>>7
>>>8
>>9
>10
>>11
>12

und wir selektieren die Nummer 3, dann sollte es so aussehen:

1
>2
>>3
>>>4
>>>5
>>7
>>9
>10
>12

1, 2 und 3 sind der direkte Weg vom Root zur 3
4 und 5 sind direkte Kinder von 3
7 und 9 sind Brüder von 3
10 und 12 sind Brüder von 2


Ich hoffe das ganze ist klar geworden :-)

Wie würde dazu der Query aussehen?


mfg Gereon


php::bar PHP Wiki   -   Listenarchive