Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Firebird: letzte 10 Datensätze ausgeben lassen (https://www.delphipraxis.net/192631-firebird-letzte-10-datensaetze-ausgeben-lassen.html)

Helmi 7. Mai 2017 09:35

Datenbank: Firebird • Version: 2.5 • Zugriff über: ZEOS

Firebird: letzte 10 Datensätze ausgeben lassen
 
Hallo,

wie kann ich mir die letzten 10 (z. B.) Datensätze einer Firebird-Datenbank anzeigen lassen?

bnreimer42 7. Mai 2017 09:41

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Meinst Du von einer Datenbank oder von einer Abfrage?

Ersteres: Ich wüsste nicht, ob das allgemein geht. Man könnte sich Mechanismen einfallen lassen, wie die gemeinsame Verwendung einer Sequenz für alle Primärschlüssel und es darüber ermitteln, aber vom System her geht das nicht out of the box.

Wenn Du es bei einer Abfrage brauchst, dann hilft Dir First (siehe
https://firebirdsql.org/refdocs/lang...d20-first-skip)

und ein richtiges Order by.

nahpets 7. Mai 2017 09:52

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Meinst Du sowas?
SQL-Code:
select first 10 * from tabelle order by id desc
Statt id halt das nehmen, nach dem sich "letzte 10" definiert.

Helmi 7. Mai 2017 10:03

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Zitat:

Zitat von nahpets (Beitrag 1370456)
Meinst Du sowas?
SQL-Code:
select first 10 * from tabelle order by id desc
Statt id halt das nehmen, nach dem sich "letzte 10" definiert.

Das gibt mir die ersten 10 Einträge aus


Zitat:

Zitat von bnreimer42 (Beitrag 1370454)
Wenn Du es bei einer Abfrage brauchst, dann hilft Dir First (siehe
https://firebirdsql.org/refdocs/lang...d20-first-skip)

In dem Link ist ein Beispiel mit skip vorhanden

So funktionierts bei mir:
SQL-Code:
Select skip ((select count(*) from tabelle - 5) * from tabelle

IBExpert 7. Mai 2017 10:26

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Der Server muss dafür aber die komplette Tabelle scannen, vermutlich sogar doppelt, daher ist der Vorschlag
order by xxx desc
wesentlich sinnvoller, wenn es denn auch ein desc Index auf dem relevanten Feld gibt

idefix2 7. Mai 2017 10:43

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Zitat:

Zitat von Helmi (Beitrag 1370458)
Zitat:

Zitat von nahpets (Beitrag 1370456)
Meinst Du sowas?
SQL-Code:
select first 10 * from tabelle order by id desc
Statt id halt das nehmen, nach dem sich "letzte 10" definiert.

Das gibt mir die ersten 10 Einträge aus

Absteigend sortiert sind die ersten die letzten. (Und die Bibel hat doch Recht :lol: )

Helmi 7. Mai 2017 10:46

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Zitat:

Zitat von idefix2 (Beitrag 1370462)
Zitat:

Zitat von Helmi (Beitrag 1370458)
Zitat:

Zitat von nahpets (Beitrag 1370456)
Meinst Du sowas?
SQL-Code:
select first 10 * from tabelle order by id desc
Statt id halt das nehmen, nach dem sich "letzte 10" definiert.

Das gibt mir die ersten 10 Einträge aus

Absteigend sortiert sind die ersten die letzten. (Und die Bibel hat doch Recht :lol: )

Schande auf mein Haupt
hab das desc übersehen :-)

bnreimer42 7. Mai 2017 11:05

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Mit einer CTE (Geht bei FB 2.5) bekommst Du die letzten 10 Sätze einer Tabelle
Code:
dbuser
in der korrekten Reihenfolge vmtl. am einfachsten so

Code:
with roh as (
select first 10 "Id" from Dbuser s
order by s."Id" desc )
select * from roh order by "Id"

Helmi 7. Mai 2017 11:44

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Zitat:

Zitat von bnreimer42 (Beitrag 1370469)
Mit einer CTE (Geht bei FB 2.5) bekommst Du die letzten 10 Sätze einer Tabelle
Code:
dbuser
in der korrekten Reihenfolge vmtl. am einfachsten so

Code:
with roh as (
select first 10 "Id" from Dbuser s
order by s."Id" desc )
select * from roh order by "Id"

da bekomm ich keine Datensätze angezeigt
[edit]
ich nimm alles zurück - funktioniert

nahpets 7. Mai 2017 11:59

AW: Firebird: letzte 10 Datensätze ausgeben lassen
 
Sowas müsste doch auch gehen:
SQL-Code:
select * from (
  select first 10 * from tabelle order by id desc
)
order by id


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:16 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz