Hi!
ich habe eine datenbank und muss für diese eine abfrage basteln.
Ziel des ganzen soll sein, das nur der datensatz aus der datenbank gelesen wird der auch wirklich benötigt wird.
ginge im prinzip ja ganz einfach wenn mir der wert eines felder bekannt wäre ..
ferner definiere ich mir noch 2 varibablen START und ANZAHL
Im zweiten schritt lass ich mir die datensätze ausgeben indem ich sage das er mir mit dem datensatz START beginnen soll und mir ANZAHL an datensätzen anzeigen soll.
nachteil der ganzen geschichte ist, das ich immer alle datensätze lade...bei einer db mit über 100mb dauert das schon ein wenig.
Wie ich den ersten und den letzen wert bekomme ist mir schon klar:
SELECT min(id) FROM texte
SELECT max(id) FROM texte
den min-wert brauch ich ja für den start.
wie kann ich denn nun sagen, das ich nur den nächstgrößeren (vom aktuellen) oder nächstkleineren wert haben möchte?
Deine Angaben sind eher allgemein - daher kann ich Dir auch nur einen allgemeinen Hinweis anbieten:
Du benötigst auch eine Variable AKTUELL die Du dann in der SQL-Abfrage verwendest:
Mit
SELECT min(id) FROM texte WHERE id > aktuell
erhältst du den Nächstgrösseren
Mit
SELECT max(id) FROM texte WHERE id < aktuell
erhältst du den Nächstkleineren
Um die nächsten 100 Datensätze ganz zu erhalten kannst Du also mit einer Unterabfrage und dem Prädikat TOP arbeiten:
SELECT TOP anzahl, id, Texte_GB, Texte_DE FROM texte WHERE id = (SELECT min(id) FROM texte WHERE id > aktuell)
Die Variablen ANZAHL und AKTUELL musst Du natürlich übergeben.
alles liebe
ole
(8-)>
Hoffe ich konnte einen Hinweis geben
H-P Ortner