Select: Max(Datum) und Group By

Breit

Mitglied
Hallo, ich hoffe die Überschrifft ist ein bisschen passend ;(...

Also ich habe eine Tabelle gps mit GPS-Positionen mehrerer Modems (bzw. GPS-Empfänger):
id, modem_id, ..., datum, ...
id -> id der GPS Position
modem_id -> id des Modems vom dem die GPS-Position ist
datum -> Datetime, Datum/Uhrzeit wann die Position von dem Modem aufgenommen wurde....

So, jetzt will ich die aktuellen (spricht die letzten bekannten) Positionen der Modems anzeigen. D.h. ich brauche, von jeder modem_id die id des Eintrages der das höchste datum hat...

Beispiel:
id ---- modem_id ---- datum
1 ---- 1 ---- 2008-01-21 15:00
2 ---- 1 ---- 2008-01-21 15:02
3 ---- 1 ---- 2008-01-21 15:04
4 ---- 2 ---- 2008-01-21 15:06
5 ---- 2 ---- 2008-01-21 15:08

bei dieser Tabelle bräuchste ich folgende Einträge: 3 und 5
3: hat das neuste Datum, des Modems 1
5: hat das neuse Datum, des Modems 2

Hat jemand eine Ahnung wie man das mit SQL selektieren kann... Ich bekomm einfach immer andere Werte... :(

Edit: DB-System, ist eine MySQL Datenbank (nicht die Neuste)...
 
Zuletzt bearbeitet:
Hallo Breit,

so sollte es gehen:
Code:
SELECT     modem_id, MAX(datum) AS datum
FROM         modem
GROUP BY modem_id
Welche MySQL-Version benutzt du?
 
OMG!! ist das einfach!
Ich hab es mit having, group by, order by und alles zusammen, etc. versucht

Na toll! :)

Nur aus Neugierde:
Gibt es auch eine Möglichkeit bei der man die ID des Eintrages mit selektieren kann?
 
Zuletzt bearbeitet:
Hallo,

ja, das geht so:

Code:
SELECT     modem.id, modem.modem_id, modem.datum
FROM         modem INNER JOIN
                          (SELECT     modem_id, MAX(datum) AS datum
                            FROM         modem
                            GROUP BY modem_id) modem_1 ON modem.modem_id = modem_1.modem_id AND modem.datum = modem_1.datum
Aber ob ein SUBSELECT funktioniert, hängt von der MySQL-Verion an.
 
Ooh... ne dann bleibe ich doch bei der ersten Version. Ich denke die ist auch performanter ;)

Vielen Dank!
 
Zurück