Ilja: MySQL GROUP BY & MAX()

Beitrag lesen

yo,

Die höchste BID muss gleichzeitig immer das aktuellste Datum sein bzw. die höchste BID ist der letzte Eintrag :)

nein, dass muss nicht zwangsweise so sein. du hast darauf keine garantie und ist eine kleine stolperfalle. selbst wenn du die BID mit autoincrement hochzählst, würde ich versuchen, das anders zu implemenieren. es ist einfach sauberer. der letzte eintrag wird alleine dadurch gekennzeichnet, indem du das MAX(datum) ausliest. dieses datum kann dann wiederum benutzt werden, um den rest des datensatzes zu bekommen, bzw. aller datensätze, die dem datum entsprechen.

Ich habe oben mal auf MAX() beim Datum verzichtet, aber da kommt genauso ein durcheinander raus wie vorher.

ist ja auch kein wunder, dass die sortierung nicht geht. zum ersten ist MAX(b.BID) überflüssig, da du nach dieser spalte gruppierst, es gibt quasi immer nur einen wert. bei datum gibt es aber mehrere und hier ist dann auch der haken, der alles durcheinander bringt, weil du dort keine aggregat-funktion benutzt und auch nicht danach gruppierst. das ist böse. ;-)

sag doch noch mal, welche mysql version du benutzt und wie deine tabellen aussehen. kannst auch mal folgende query versuchen, allerdings mit dem hinweis, dass dies nicht sauber implementiert ist, wegen oben genannten gründen.

SELECT b.AID, MAX(b.BID), MAX(DATE_FORMAT(b.datum,'%d.%m')) AS zeit
FROM bewertung AS b
GROUP BY b.AID
ORDER BY zeit DESC
LIMIT 5

Ilja