[MySQL]Aktuellesten Datensätze ausgeben

sdh

Mitglied
Hallo,
nachdem ich nun ein wenig SQL Selects begriffen habe stehe ich vor folgendem Problem.
In einer Tabelle hab ich eine Statuskennung 'status', die ID eines (PC) Datensatzes einer anderen Tabelle und einen Timestamp. Ich möchte als Ergebnis alle Felder aber nur mit dem neusten timestamp je pc.

Tabelle:
statusid | status | pc | timestamp
--------------+--------------+-------+-----------------
1 | 1 | 1 | 2008-01-09 13:15:00
2 | 1 | 2 | 2008-01-09 13:18:00
3 | 1 | 3 | 2008-01-09 13:20:00
4 | 1 | 4 | 2008-01-09 13:22:00
5 | 2 | 1 | 2008-01-09 13:30:00

Ziel:
statusid | status | pc | timestamp
--------------+--------------+-------+-----------------
2 | 1 | 2 | 2008-01-09 13:18:00
3 | 1 | 3 | 2008-01-09 13:20:00
4 | 1 | 4 | 2008-01-09 13:22:00
5 | 2 | 1 | 2008-01-09 13:30:00

Ich bekomme es einfach nicht hin, habe folgendes versucht
SELECT MAX(timestamp), statusid, status, pc FROM tabelle GROUP BY pc und vieles mehr, ich verzweifele bald:-(

Sicherlich ist es ganz einfach, oder nicht?

Gruß
Sascha
 
Ich bin neu in MYSQL aber ich habe das durch Sortieren gelöst,

"select * from tabelle ORDER BY `datum` DESC"

dann stehen die Neusten Datensätze ganz oben, mit einen Zusätzlichen LIMIT #anzahl kann die Anzahl der Datensätze bestimmt werden die ausgegeben werden sollen, vielleicht hilft das weiter.
 
Hallo ,

der Anfang mit gruppieren und Max() ist doch schon ok.
Aber du darfst nicht alle Felder gruppieren, in deinem Fall nur das Feld PC und du brauchst das Maximum von timestamp (Feldnamen sollten nicht so heissen wie Datentypen).

Code:
SELECT     tempTabelle.*
FROM         tempTabelle INNER JOIN
                          (SELECT     pc, MAX(Timestampp) AS timestampp
                            FROM          tempTabelle
                            GROUP BY pc) tabelle1 ON tempTabelle.pc = tabelle1.pc AND tempTabelle.Timestampp = tabelle1.timestampp
 

Neue Beiträge

Zurück