![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: SQLite3Connection
Die letzte Zeile aus der DB schnell auslesen?
Hallo,
kann man die letzte Datenzeile aus der DB ohne einer Schleife auslesen? Zur Zeit mache ich es so, würde aber die Abfrage etwas verkürzen, Falls machbar ist, da bei vielen Datensätzen kann man Code sehr langsam sein.
Delphi-Quellcode:
Danke!
// Die letzte Kundennummer des Teilnehmers auslesen
SQLQueryLastKNr.Close; SQLQueryLastKNr.SQL.Text := 'SELECT knr FROM tbteilnehmer'; SQLQueryLastKNr.Open; while not SQLQueryLastKNr.Eof do begin LastKNr := SQLQueryLastKNr.FieldByName('knr').AsInteger; SQLQueryLastKNr.Next; end; // Ende SQLQuery1.ParamByName('knr').AsInteger := LastKNr + 1; |
AW: Die letzte Zeile aus der DB auslesen?
Und was kennzeichnet eine letzte Datenzeile aus?
DBs sind mengenorientiert. Solange du nicht definierst was "letzte Datenzeile" ausmachst geht das nicht. Deine Abfrage wird nur zufälligerweise das gewünschte Ergebnis liefern. Mein Goldkugel sagt mir das du eine Autoinc-ID mitführst und der größte Wert dem letzten eingefügten Datensatz entspricht den du haben willst. Also ein
Code:
SELECT Max(knr) FROM tbteilnehmer group by knr
|
AW: Die letzte Zeile aus der DB schnell auslesen?
AUTOINCREMENT ist bei mir nur die ID, die Kundennummer nicht, da SQLite AUTOINCREMENT nur ein Mal erlaubt. Ich muss also die Kundennummer selber hoch zählen, daher
Zitat:
|
AW: Die letzte Zeile aus der DB schnell auslesen?
Zitat:
![]() |
AW: Die letzte Zeile aus der DB schnell auslesen?
Zitat:
Je nach Datenbank ist ein absteigend sortierter Index erforderlich wenn es möglichst schnell funktionieren soll. (InterBase in den mir bekannten Versionen klappert bei MAX und nur aufsteigendem Index noch durch alle Sätze) |
AW: Die letzte Zeile aus der DB schnell auslesen?
Laut Beschreibung/Überschrift woller er ja nicht die größte Nummer, sondern die Letzte, also
SQL-Code:
:stupid:
SELECT knr FROM tbteilnehmer ORDER BY xxx DESC LIMIT 1
xxx = akn oder nach was auch immer die Daten sortiert sein sollen (z.B. insert_date oder so) Ansonsten wäre sein Code auch irgendwie falsch.
Delphi-Quellcode:
LastKNr := -1; // warum hast du die Variable nicht initialisiert? Was soll denn rauskommen, wenn es keine Datensätze gibt!
while not SQLQueryLastKNr.Eof do begin if LastKNr < SQLQueryLastKNr.FieldByName('knr').AsInteger then LastKNr := SQLQueryLastKNr.FieldByName('knr').AsInteger; SQLQueryLastKNr.Next; end; |
AW: Die letzte Zeile aus der DB schnell auslesen?
Habe diese Selektion gefunden, die gut funktioniert. :thumb:
Delphi-Quellcode:
SELECT knr FROM tbteilnehmer WHERE id_teilnehmer=(SELECT MAX(id_teilnehmer) FROM tbteilnehmer)
Die id_teilnehmer hat wohl den Index, die knr nicht wie es scheint. |
AW: Die letzte Zeile aus der DB schnell auslesen?
SQL-Code:
:stupid: (Beschreibung siehe Nachtrag meine letzter Antwort)
SELECT knr FROM tbteilnehmer ORDER BY id_teilnehmer DESC LIMIT 1
|
AW: Die letzte Zeile aus der DB schnell auslesen?
Zitat:
Zitat:
SQL-Code:
gar nicht so falsch.
select max(knr) from tbteilnehmer Group by teilnehmer-id
Gruß K-H |
AW: Die letzte Zeile aus der DB schnell auslesen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz