Kuno: mysql: MAX() oder ORDER-BY

Hey,

habe folgenden Code:

SELECT users.name, max(fotos.id) AS aktuellstes_foto FROM users
 LEFT JOIN fotos ON fotos.user = users.name
ORDER BY users.datum DESC
LIMIT 0,50

Die Aufgabe:
Es gibt eine Datenbank mit Fotos. Jedes Foto ist einem User zugeordnet.
Nun möchte ich zu jedem User dessen aktuellstes Foto (die ID vom Foto) ausgeben.
Das aktuellste Foto hat die höchste id und den neusten TIMESTAMP.

Nun suche ich zwei Möglichkeiten:
Ich möchte entweder per max(id) oder via "ORDER BY fotos.datum DESC" das aktuellste Foto anzeigen.

Hat jemand eine Idee?

  1. yo,

    das aktuelleste foto anhand seiner id festzumachen ist eine schlechtre lösung. besser dafür sind datumswerte, bzw. dein timestamp. auch deine abfrager ich fehlerhaft. das liegt daran, dass nur mysql bei dieser abfrage keine fehlmeldung ausgibt, alles anderen dbms würden das nämlich tun, weil deine gruppierug über alle nicht aggregat-spalten fehlt.

    du könntest die abfrage mit unterabfragen lösen, diese gehen aber erst ab mysql 41. und höer, fragt sich also, welche version du benutzt. desweiteren ist zu ermitteln, ob es immer mindestens ein foto für einen user gibt, bzw. ob nur die user ausgesucht werden sollen, die auch eins besitzen. dann kannst du einen inner join anstelle des outer joins verwenden.

    Ilja