lollo: Navigation aus Mysql-Tabelle

Beitrag lesen

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ß