Hallo,
durch viel probieren bin ich (glaube ich) zu einer Lösung gekommen:
---
SELECT n.title, COUNT(*) AS ebene
FROM navi AS n, navi AS p
WHERE n.left
BETWEEN p.left
AND p.right
GROUP BY n.left
HAVING ebene = 1 OR (left
BETWEEN $left-wert-der-aktuellen-seite$ AND $right-wert-der-aktuellen-seite$ AND ebene <= $ebene-der-aktuellen-seite$+1)
ORDER BY n.left
---
$left-wert-der-aktuellen-seite$
$right-wert-der-aktuellen-seite$
$ebene-der-aktuellen-seite$
Sind bekannt, da man zuvor schon die aufgerufene Seite aus der Datenbank abgefragt hat.
Begehe ich mit diesem Statement einen großen Fehler? Wie könnte ich das Statement eventuell verbessern? Wo sollten jetzt am besten die Index liegen?
Gruß