Ich habe folgende Abfrage in der der Ast mit der ID 4 ausgegeben wird (inklusive der ID 4)
SELECT o. * , COUNT( p.id ) -1 AS level
FROM menu AS n, menu AS p, menu AS o
WHERE o.lft
BETWEEN p.lft
AND p.rgt
AND o.lft
BETWEEN n.lft
AND n.rgt
AND n.id =4
GROUP BY o.lft
ORDER BY o.lft
Dann wird folgendes ausgegeben
id ! name ! lft ! rgt ! level
4 Menu 1 12 23 1
205 Ebene 2 13 14 2
206 Ebene 2 15 20 2
208 Ebene 3 16 17 3
209 Ebene 3 18 19 3
207 Ebene 2 21 22 2
Mein Wunschergebnis ist nun das immer nur die Einträge die eine Ebene unterhalb der aufgerufenen ID sind sind ausgegeben werden, also wenn wie in meinem Beispiel die ID 4 abgefragt wird, soll
205 Ebene 2 13 14 2
206 Ebene 2 15 20 2
207 Ebene 2 21 22 2
oder wenn ID 206 abgefragt wird, dann eben
208 Ebene 3 16 17 3
209 Ebene 3 18 19 3
Mein Ansatz wäre es mit HAVING Level =2 zu versuchen, aber wie bekomme ich den jeweiligen Level, der über der abgefragten ID ist heraus?
Kathi