MySQL: Neueste Einträge pro Kategorie in einer Tabelle finden

YeahBuddy

Grünschnabel
Hallo Forum,

ich habe folgendes Problem:
Eine Tabelle mit News-Einträgen verschiedener Kategorien, dazu gibt es jeweils ein Datum. Also vereinfacht: | Newstext | KategorieID | Datum

Datentypen: Newstext = text, KategorieID = int, Datum = date

Jetzt möchte ich mit Hilfe einer einzigen SQL-Abfrage die jeweils neuesten News pro KategorieID erhalten. Also Bei 5 verschiedenen News-Kategorien hätte ich gerne die 5 neuesten Einträge. Hört sich einfach an, macht mir aber gerade wirklich Probleme..

Das Datum kann beliebig sein, auch in der Zukunft liegen. Der "neueste" Eintrag muss jeweils das mit dem "höchsten" Datum sein.

Ich hoffe da kann mir jemand helfen...
 
Hi,

select newstext, kategorieId, max(datum)
from tabelle1
group by kategorieid


gegebenfalls musst du die anderen Felder auch noch in den group by mit reinnehmen.
Aber so kriegste auf jeden fall mal das größte datum, dass es in der gibt. also somit auch das aktuellste.

hoffe, dass ich dir helfen konnte.

vg
 
Vielen Dank, das hat mir schon geholfen.

Ich hatte dann noch einen Sonderfall, bei dem kein Datum vorhanden war, sondern nur Monats- und Jahreszahl, beide in INT.

Vielleicht hilfts ja jemandem: In diesem Fall habe ich die neuesten Einträge pro Kategorie so geholt:

SELECT * FROM news n
LEFT JOIN news_types t ON n.NEWSTYPE = t.ID
WHERE ((n.year*12)+n.month+(n.kategorie*100000)) IN ( SELECT MAX( ((i.year*12)+i.month+(i.kategorie100000)) ) AS selector
FROM news i WHERE i.NEWSTYPE=1 GROUP by i.kategorie)
ORDER BY n.YEAR DESC, n.MONTH DESC
 
Zurück