Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SELECT *, last(xxxx) ... mit MYSQL (https://www.delphipraxis.net/100199-select-%2A-last-xxxx-mit-mysql.html)

Alfonso 24. Sep 2007 14:22

Datenbank: MySQL • Version: 5 • Zugriff über: ZEOS

SELECT *, last(xxxx) ... mit MYSQL
 
Hallo,

in Access konnte ich folgenden Befehl eingeben
SQL-Code:
SELECT CI, Last(START_DATE) FROM tblSachnummer
GROUP BY CI
In MYSQL 5 funktioniert es nicht. Scheinbar gibt es die Last Funktion nicht. Ist das richtig? Wie erhalte ich nun eine Gruppierte Ausgabe, wo nur der neueste Wert berücksichtigt wird?

Gruß
Alfonso

DeddyH 24. Sep 2007 14:24

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Hallo,

ich hoffe, ich habe Dich richtig verstanden: Die Besten pro Gruppe

mkinzler 24. Sep 2007 14:25

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Heißt in MySQL LIMIT

Gollum 24. Sep 2007 14:33

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Hallo,

mit Limit wird er in diesem Fall nicht viel anfangen können.
Wahrscheinlich wird ihm die Funktion MAX statt Last weiterhelfen.

mkinzler 24. Sep 2007 14:59

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Zitat:

Zitat von Gollum
Hallo,

mit Limit wird er in diesem Fall nicht viel anfangen können.
Wahrscheinlich wird ihm die Funktion MAX statt Last weiterhelfen.

Warum nicht? er muß nur rückwärts Sortieren und den Ersten nehmen
MAX ist auf jedenfall war anderes

franktron 24. Sep 2007 15:00

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Das geht ganz einfach

SQL-Code:
SELECT CI, START_DATE FROM tblSachnummer
GROUP BY CI
ORDER BY DESC START_DATE
LIMIT 5;

Alfonso 25. Sep 2007 08:17

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Das geht alles leider nicht. :pale:

Beispiel:
tblSachnummer enthählt folgende Werte
!CI !START_DATE !
!AA !2007-09-24 14:05:02!
!AA !2007-09-23 13:05:02!
!AA !2007-09-22 13:05:02!
!AA !2007-09-21 13:05:02!
!AA !2007-09-21 10:07:02!


Wenn ich jetzt folgende Abfrage in MySQL5 mache
SQL-Code:
SELECT CI, START_DATE FROM tblSachnummer
GROUP BY CI
erhalte ich als Ergebnis
!AA !2007-09-21 10:07:02!

ich möchte aber nicht den letzten Wert sondern den ersten wert zurückbekommen
!AA !2007-09-24 14:05:02!

Wer hat eine Idee?

Gruß
Alfonso

Matze 25. Sep 2007 08:22

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Hallo Alfonso,

wenn der Datum-String immer unterschiedlich ist, würde ich das so machen, wobei ich das immer mit einem Timestamp mache (ungetestet):

SQL-Code:
SELECT CI, START_DATE FROM tblSachnummer
GROUP BY CI
ORDER BY START_DATE DESC
LIMIT 1
Also absteigend sortieren und dann den ersten Datensatz auslesen.


Edit: ich sehe gerade, dass es im Prinzip das ist, was franktron auch vorgeschlagen hat.

Alfonso 25. Sep 2007 08:27

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Das funktioniert nicht. Das "Sort" sortiert das Ergebnis dass die SELECT zurückgibt. Das problem ist, dass das GROUP mir schon den falschen Datensatz liefert, und zwar den letzten und ich brauche den ersten.

Gruß
Alfonso

Matze 25. Sep 2007 08:34

Re: SELECT *, last(xxxx) ... mit MYSQL
 
Du kannst auch mal

SQL-Code:
SELECT CI, START_DATE FROM tblSachnummer
GROUP BY START_DATE
ORDER BY START_DATE DESC
LIMIT 1
testen. Das klingt zwar wenig sinnvoll, doch um LIMIT nutzen zu können, braucht man einen gruppierten Datensatz. Nach welcher Spalte man gruppiert ist eigentlich egal. Da dein Datum-String immer unterschiedlich ist, werden die Datensätze durch das GROUP BY nicht zusammengefasst und somit sollte der richtige Datensatz zurückgegeben werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:36 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