

Wenn man viele Datensätze zu verwalten hat, ist es oft vorteilhaft, wenn man sich möglichst schnell durch die Datensätze klicken kann. Also eine Blätterfunktion durch die Datenbank.
Ich habe die Problemstellung so gelöst:
Sortiert wird in diesem Fall nach `title`.
Schritt 1: Wert vom `title` des aktuellen Eintrages ermitteln
%title_value% = SELECT title FROM table WHERE `id` = %id%
Schritt 2 wenn aufsteigend Sortiert wird:
Erster Eintrag: SELECT `id` FROM table ORDER BY title DESC LIMIT 1
Eintrag zurück: SELECT `id` FROM table WHERE title > '%title_value%' ORDER BY title ASC LIMIT 1
Eintrag vor: SELECT `id` FROM table WHERE title < '%title_value%' ORDER BY title DESC LIMIT 1
Letzter Eintrag: SELECT `id` FROM table ORDER BY title ASC LIMIT 1
Schritt 2 wenn absteigend Sortiert wird:
Erster Eintrag: SELECT `id` FROM table ORDER BY title ASC LIMIT 1
Eintrag zurück: SELECT `id` FROM table WHERE title < '%title_value%' ORDER BY title DESC LIMIT 1
Eintrag vor: SELECT `id` FROM table WHERE title > '%title_value%' ORDER BY title ASC LIMIT 1
Letzter Eintrag: SELECT `id` FROM table ORDER BY title DESC LIMIT 1
Kommentare
Ich hatte leider nicht
Ich hatte leider nicht berücksichtigt, das es ja auch Datensätze mit dem gleichen Titel gibt. In dem Fall muss man diese auch zulassen und die Abfrage (für den nächsten Datensatz) würde so ausschauen:
SELECT id FROM table WHERE ( (title >= '%title_value%' AND id > '2') OR title > '%title_value%') AND id != '2' ORDER BY title ASC, id ASC LIMIT 1