Sven Rautenberg: SQL - Die letzten sechs Datensätze anzeigen

Beitrag lesen

Moin!

Na ist doch eigentlich kein Thema. Ich kenn mich mit SQL nicht aus. Deshalb würde ich es so machen. Du führst eine laufende Nummer (ID) ein. Läßt Dir den Maximalwert anzeigen nach dem Motto:

set Anzahl = Conn.Execute("select Max(ID) as MaxID from Tabelle")
nummer = Anzahl("MaxID")

Das holt die höchste vergebene ID. Soweit ok.

Dann hast Du in nummer den höchsten Wert der laufenden Nummer.
Davon dividierst Du 5. Dann machst Du wieder ne Abfrage in ner Schleife und gibst die Datensätze aus:

"Subtrahierst", nicht "dividierst". Dividieren heißt "teilen", subtrahieren heißt "minus-rechnen".

Conn.Execute ("select * from Tabelle where ID = x")

Das funktioniert solange, wie die ID fortlaufend ohne Lücken vergeben ist. Wenn aber Lücken entstehen (und eine ID ist dafür gemacht, dass Lücken entstehen, wenn Datensätze gelöscht werden), dann versagt dein Ansatz.

Die bessere Lösung setzt beim SQL-Befehl an.

MySQL kann beispielsweise die Anzahl der auszugebenden Datensätze mit Limit beeinflussen:

SELECT * FROM tabelle LIMIT 5 -> ergibt nur 5 Datensätze, sofern vorhanden.

Das sollte man kombinieren mit einem Sortierbefehl, damit die Reihenfolge der Datensätze definiert ist (ansonsten kommen irgendwelche 5 Datensätze):

SELECT * FROM tabelle ORDER BY id ASC LIMIT 5 -> ergibt die 5 Datensätze mit der kleinsten ID, also die "ersten".

Die letzten Datensätze kriegt man, indem man die Sortierung einfach umdreht - statt aufsteigend (ASC) einfach absteigend (DESC) sortieren.

Und als zweites: Der dann erste Datensatz soll übersprungen werden.

SELECT * FROM tabelle ORDER BY id DESC LIMIT 2,5

LIMIT 2,5: Starte beim 2. Datensatz und gib 5 Stück aus.

Die Aufgabe wäre jetzt, herauszufinden, ob die tatsächlich verwendete Datenbank sowas wie LIMIT kennt, wie man das benutzt, und wie man sortiert.

Ansonsten bliebe die Alternative, LIMIT wegzulassen, trotzdem umgekehrt zu sortieren und einfach nur die ersten 6 Datensätze einzulesen - der erste Datensatz wird dann weggeworfen, und die weiteren 5 sind die gewünschten.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)