Vinzenz Mai: SQL-Abfrage - kein Order By max() AS ??

Beitrag lesen

Hallo

Zuerst wird das where ausgewertet und dann erst 'datum'. Deswegen geht's nicht!

Richtig. Deswegen gibt es, wie z.B. auch in Datensätze gruppieren mit SQL nachzulesen ist, HAVING. Allerdings ist die Reihenfolge der Klauseln festgelegt - und HAVING kommt folgerichtig _nach_ GROUP BY, Daher

  
     SELECT  
        id_concert,  
        max(date + time) AS datum  
     FROM events  
     GROUP BY id_concert  
     HAVING datum < '1161424143'  -- Warum ein Zeichenkettenvergleich?  
     ORDER BY datum DESC  

Da nach keiner anderen Spalte als id_concert gruppiert wurde, habe ich alle anderen Spalten rausgeworfen. Nur MySQL läßt solche Schlampigkeit zu - und das Ergebnis ist laut Handbuch unvorhersagbar. Unvorhersagbare Ergebnisse sind unbrauchbar.

Möchte der OP weitere Detailinformationen, so bekommt er diese typischerweise über eine korrelierte Unterabfrage, was MySQL 4.1 und neuer voraussetzt.

Der Datentyp der Spalten "date" und "time" scheint ebenfalls ungünstig gewählt zu sein. Es gibt den Datentyp DATETIME :-) Es gibt Datums- und Zeitfunktionen.

Freundliche Grüße

Vinzenz