Also Ludger,
rühmst du dich nicht immer, wenigstens zum thema datenbanken hier auch ab und an mal was fachlich sinnvolles beizutragen zu haben ...?
wenn Du auf die genannte Tabelle ein SQL-Statement loslaesst (und das tust Du ja auch), dann gibts eine Datensatzmenge (eine Matrix) zurueck. Diese bearbeitest Du dann wohl mit der auf dem Webserver laufenden Logik (PHP?) und pickst Dir einen Datensatz heraus, korrekt?
Nun, ich wuerde sowas jedenfalls mit bspw. PHP machen und SQL nicht bemuehen. Falls es ums Herauspicken (und anderen Pickereien) aus einer sortierten Datensatzmenge geht.
wenn man lediglich zu datensatz x den davor und den danach haben möchte, ist es unperformater unfug, den _kompletten_ datenbestand vom mysql- an den webserver zu übertragen, nur um dort die selektion vorzunehmen.
gängigste lösung für das problem ist die aufteilung auf drei queries (ja, auch nicht unbedingt hochperformant, aber immer noch besser als alle datensätze auszulesen, wenn der großteil überhaupt nicht benötigt wird).
eine query holt den eigentlichen datensatz, und die anderen beiden jeweils den "kleinsten unter" bzw. "größten über" diesem datensatz - größer/kleiner natürlich in bezug auf die gewählte sortierordnung. LIMIT hilft, dabei immer nur einen der datensätze zu bekommen.
beispiel mit nummerischer ID als sortierkriterium, gewünscht sei datensatz mit ID 15 und der davor/dahinter:
SELECT [spalten] FROM tabelle WHERE id = 15
SELECT [spalten] FROM tabelle WHERE id < 15 ORDER BY id DESC LIMIT 1
SELECT [spalten] FROM tabelle WHERE id > 15 ORDER BY id ASC LIMIT 1
und wenn man von den inhalten des vorherigen/folgenden datensatz ausschließlich die IDs braucht (bspw. zur realisierung einer "blätter-funktion" o.ä.), kann man in den letzten beiden queries auch nur die spalte id selektieren, während man im ersten select ja vermutlich an mehr spalteninhalten interessiert ist.
gruß,
wahsaga
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }