Franziska: nestedset, Menü aus Datenbank in HTML ausgeben

Sorry das ich mit etwas komme was schon xmal behandelt wurde, aber ich komme obwohl ich mir alles durchgelesen habe nicht weiter. Ich hoffe hier kann mir jemand helfen, weil ich kapier nichts mehr.
Ich habe auf Grundlage von "nestedset" ein Menü erstellt

id ! name         ! links         ! rechts
-----------------------------------------------
1 ! Lebensmittel ! 1 ! 14
2 ! Gemüse ! 2 ! 11
4 ! Broccoli ! 3 ! 10
7 ! Gelbkohl ! 5 ! 4
6 ! Rotkohl ! 7 ! 6
5 ! Grünkohl ! 9 ! 8
3 ! Obst ! 12 ! 13
8 ! Auto ! 15 ! 20
10! Opel ! 16 ! 17
9 ! Mercedes ! 18 ! 19

. Nun möchte ich diesen in ausgeben, aber mit allen Vorläufern, so etwa:

Lebensmittel
Lebensmittel - Gemüse
Lebensmittel - Gemüse - Broccoli
Lebensmittel - Gemüse - Gelbkohl
Lebensmittel - Gemüse - Rotkohl
Lebensmittel - Obst
Auto
Auto - Opel
Auto - Opel

Bis jetzt habe ich das:

SELECT s.id, s.Name, count( * ) AS  
LEVEL , (  
s.rgt - s.lft -1  
) /2 AS Kinder, s.lft, s.rgt  
FROM NestedSet v, NestedSet s  
WHERE s.lft  
BETWEEN v.lft  
AND v.rgt  
GROUP BY s.lft

bei folgender Ausgabe:

id Name LEVEL Kinder lft rgt
1 Lebensmittel         1 9.0000 1 14
2 Gemüse 2 2.0000 2 11
5 Broccoli 3 1.0000 3 10
9 Gelbkol 4 0.0000 5 4

weiter würde ich so vorgehen, aber so bekomme ich nur das Ende der jeweiligen Liste:

$result = mysql_query($sql) or die ($sql.'<br>'.mysql_error());

while ($ausgabe = mysql_fetch_object($result))  
{  
echo $ausgabe->Name.'<br>';  
}

Franzi

  1. Hi!

    id ! name         ! links         ! rechts

    1 ! Lebensmittel ! 1 ! 14
    2 ! Gemüse ! 2 ! 11
    4 ! Broccoli ! 3 ! 10
    7 ! Gelbkohl ! 5 ! 4
    6 ! Rotkohl ! 7 ! 6
    5 ! Grünkohl ! 9 ! 8
    3 ! Obst ! 12 ! 13
    8 ! Auto ! 15 ! 20
    10! Opel ! 16 ! 17
    9 ! Mercedes ! 18 ! 19

    Sieht falsch aus. Links ist bei Nested Sets immer kleiner als rechts. Zudem ist der Ampelkohl wohl eher kein Broccoli.

    Nun möchte ich diesen in ausgeben, aber mit allen Vorläufern, so etwa:
    Lebensmittel - Gemüse - Broccoli

    Mit Nested Sets lassen sich mit einer Anfrage für _einzelne_ Elemente alle Vorfahren ermitteln. Um für _alle_ Elemente alle Vorfahren zu ermitteln, musst du für alle Elemente einzeln die Vorfahren-Query stellen oder im abfragenden Programm einmalig alle interessierenden Elemente abfragen, daraus einen Baum bilden und den dann rekursiv durchlaufen.

    Mit SQL-Mitteln allein fällt mir nur die Erstellung einer Stored Function ein.

    Lo!