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