Bademeister: NestedSets - Menüpfad

Beitrag lesen

Hallo,

Hallo johanoa

ich habe eine NestedSets-Tabelle mit left / right / level

Das Level solltest Du nicht speichern, das ist redundant und kann relativ leicht berechnet werden.

Nun habe ich ein Wertetripel gegeben und möchte dazu folgende Datesätze ausgeben:

  • Die Kinder eine Ebene tiefer als der gegebene Knotenpunkte.
  • Die Geschwister zu jedem Knotenpunkt auf dem Pfad

was meinst Du mit dem zweiten Punkt genau?

Ich hätte das so verstanden, dass von dem "ich" aus nur

- bin
    - ich
        - mit
        - ein paar
    - unterpunkten

ausgegeben werden soll. Oder stimmt das nicht?

SELECT p.*
    FROM tree n,
         tree p
   WHERE n.lft BETWEEN p.lft AND p.rgt
     AND n.id = 5
ORDER BY n.lft;

Das ist glaub ich nicht, was Du willst. Das gibt Dir nämlich alle Vorfahren Deines Knotens mit id 5. Du brauchst eher sowas

SELECT n.id, count(*) -- das Zweite gibt Dir das Level, ggf. auch count(*) - 1
   FROM tree n,
        tree p
   WHERE n.lft BETWEEN p.lft AND p.rgt
     AND n.level = (das Level des knotens "ich" oder eins kleiner) -- in die Klammern muss ne entsprechende Unterabfrage)
ORDER BY n.lft;

Oder?

Viele Grüße
der Bademeister