Vinzenz Mai: ip groupieren und neusestes Datum ausgeben (mysql)

Beitrag lesen

Hallo,

Meine Idee ist folgende,  ich groupiere einfach die IP'S und alasse mir die IPs ausgeben die die letzten 10 Minuten online waren. Doch mein Problem ist das sortieren innerhalb einer groupierung?

ja, das ist ein typisches MySQL-Problem. MySQL ist am wenigsten geeignet, um den Umgang mit GROUP BY und Aggregatsfunktionen zu lernen.

select ip, DATE_FORMAT(date,'%d.%m.%Y %H.%i.%s') datum  from statistik GROUP BY ip ORDER by date ASC

Es ist ganz einfach. Auf Dein Datum wendest Du eine Aggregatsfunktion an. Das ist das, was andere DBMS zwingend verlangen. Du möchtest den neuesten Zeitpunkt zu jeder IP. Wunderbar, nutze einfach MAX() und formatiere diesen Wert wie gehabt mit DATE_FORMAT:

SELECT  
    ip,  
    DATE_FORMAT([link:http://dev.mysql.com/doc/refman/5.1/en/group-by-functions.html#function_max@title=MAX](date), '%d.%m.%Y %H.%i.%s')) datum  
FROM  
    statistik  
GROUP BY  
    ip  

Du möchtest nur diejenigen, die in den letzten 10 Minuten einen Eintrag hatten? Schränke die zu betrachtenden Datensätze mit der WHERE-Klausel ein. Das kriegst Du bestimmt selbst hin.

Freundliche Grüße

Vinzenz