Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Filter neusten Datensatz (https://www.delphipraxis.net/109652-filter-neusten-datensatz.html)

Tim Henford 5. Mär 2008 11:11

Datenbank: MS SQL 2000 • Zugriff über: ADO

Filter neusten Datensatz
 
Hallo,

ist es via Filter irgendwie möglich den ältesten Datensatz einer Tabelle anzuzeigen oder muss ich dazu immer einen Vergleichswert haben?
Also meine Tabelle hat 2 Spalten Name und Datum und dann sowas wie
Delphi-Quellcode:
Query.Filter:= 'Name=''test'' AND max(Datum)';

s-off 5. Mär 2008 11:19

Re: Filter neusten Datensatz
 
Hallo,

wenn Du kein Feld 'Datum' hast, dann kannst Du darauf schlecht zugreifen.
Entweder Du legst Dir ein entsprechendes Feld an und füllst dieses beim Anlegen des Records mit einem TimeStamp, oder aber Du legst Dir ein Feld für den PrimaryKey an, was Du auf jeden Fall tun solltest (!!) und gehst darauf.

Tim Henford 5. Mär 2008 11:36

Re: Filter neusten Datensatz
 
ja sorry, ich hatte oben Mist geschrieben, natürlich heißt eines der Felder "Datum" und ich lasse via Trigger automat. die Zeit eintragen, nur wollt ich eben so wie oben beschrieben den ältesten Eintrag filtern, aber MAX gibt es wohl bei Filter nicht...

Was macht man da?

s-off 5. Mär 2008 11:41

Re: Filter neusten Datensatz
 
Warum nutzt Du bei einer Query Filter, und nicht SQL?

Tim Henford 5. Mär 2008 12:32

Re: Filter neusten Datensatz
 
dann muss ich es wohl so machen
wie sehe dass denn mit SQL aus?

SQL-Code:
SELECT * FROM Tabelle WHERE Name=test AND SELECT max(Datum) FROM Tabelle

mkinzler 5. Mär 2008 12:36

Re: Filter neusten Datensatz
 
SQL-Code:
SELECT top 1 * FROM Tabelle WHERE Name=test FROM Tabelle order by datum desc;

s-off 5. Mär 2008 12:40

Re: Filter neusten Datensatz
 
das letzte 'FROM TABELLE' kann weg ;)

Oder Du machst es so:
SQL-Code:
SELECT * FROM Tabelle WHERE Name=test and datum=(SELECT max(datum) FROM Tabelle);

Tim Henford 5. Mär 2008 12:43

Re: Filter neusten Datensatz
 
Ist das dann eigentlich das gleiche:

SQL-Code:
SELECT * FROM Tabelle WHERE Name=test HAVING max(Datum)

DeddyH 5. Mär 2008 12:44

Re: Filter neusten Datensatz
 
SQL-Code:
SELECT * FROM Tabelle WHERE Name='test' and datum=(SELECT max(datum) FROM Tabelle WHERE Name='test');
P.S.: HAVING geht nur im Zusammenhang mit Gruppierung AFAIK

mkinzler 5. Mär 2008 12:45

Re: Filter neusten Datensatz
 
Es handelt sich hier um keine Sortierung sondern gruppieren. Dürfte so aber nicht funktionieren, da die Abfrage keine Aggegate verwendet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.

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