SQL GROUP und Max(x) Problem

deltoz

Grünschnabel
Hallo,

kämpfe schon seit längerem mit dem Problem, dass bei dieser Abfrage (s.u.) nicht richtig nach MsgDate und MsgTime sortiert wird :confused: oder nur teilweise....

Würde gerne bei der Gruppierung immer den aktuellsten DS anzeigen...


SELECT tid, Max(MsgDate), Max(MsgTime), MsgPriority, MsgHostname, MsgText,count(tid) FROM tb_syslogd GROUP BY MsgText,MsgPriority,MsgHostname ORDER BY MsgDate DESC, MsgTime DESC

Hat jemand evtl. ne Ahnung, möchte nicht noch mehr Zeit darin investieren :( ?

Danke...
 
Schau mal in diesen Thread, Beitrag 15.
Da habe ich einen Workaround gemacht, vielleicht ist es das, was Du meinst.
Beschrieben ist das auch hier.
Wenn Dir Subqueries zur Verfügung stehen, ist der Weg natürlich effizienter. Du wirst dann aber vermutlich mit dem COUNT Probleme kriegen.

Gruß hpvw
 
Hallo,

vielen Dank erstmal... Das in der Doku von mysql habe ich auch schon gelesen aber bin leider nicht weiter gekommen :confused: Und im Forum ist das selbe beschrieben...

Ich würde gerne alle Datensätze bei denen MsgPriority, MsgHostname und MsgText gleich sind gruppieren und immer den höchsten Datensatz im Bezug auf MsgDate und MsgTime ausgeben... (funktioniert auch)
Mein Problem besteht darin, diese Jetzt sortiert nach Date und Time auszugeben... Irgendwie macht er mir das einfach nicht...

SELECT tid, Max(MsgDate), Max(MsgTime), MsgPriority, MsgHostname, MsgText,count(tid) FROM tb_syslogd
GROUP BY MsgText,MsgPriority,MsgHostname ORDER BY MsgDate DESC, MsgTime DESC

Evtl. hat ja jemand ne Ahnung...
Vielen Dank schonmal!
 
Hilft das vielleicht?
Code:
SELECT 
tid, 
Max(MsgDate) AS MaxDatum, 
Max(MsgTime) AS MaxZeit, 
MsgPriority, 
MsgHostname, 
MsgText,
count(tid) AS Anzahl
FROM tb_syslogd
GROUP BY MsgText, MsgPriority, MsgHostname 
ORDER BY MaxDatum DESC, MaxZeit DESC
Ansonsten versuche nochmal, das Problem genauer zu beschreiben.
Hintergrund:
MySQL nimmt relativ zufällig eine Zeile aus den gruppierten Einträgen.
Die Felder, nach denen Du sortiert hast gehören noch zu dieser zufälligen Zeile, während die angezeigten Werte die, im SELECT gewählten, Maximalwerte sind.
In dem Code oben sind für die maximalen Werte der Gruppierung Aliasnamen verwendet, nach denen Explizit sortiert wird.

Gruß hpvw
 
Zurück