boris: sortierung bei GROUP BY

hallo zusammen!

Ich habe eine tabelle, die als forum fungieren soll.
ich will eine liste der themen und jeweils die epochensekunde des letzten eintrag.
mit:

SELECT  thema, MAX(Epochensekunde)
              FROM tabelle
              GROUP BY thema

komme ich dem, was ich will schon sehr nahe. leider sortiert er dabei nach thema und dabei will ich doch eine sortierung nach  Epochensekunde.

Meine versuche mit thema und DISTINCT habe ich gelassen, weil thema und Epochensekunde schon eine gruppe bilden sollten ausserdem habe ich ja in jeder zeile eine andere Epochensekunde
Was ich bräuchte ist sowas wie:

GROUP BY MAX(Epochensekunde)
oder zumindest
              GROUP BY thema
              ORDER BY MAX(Epochensekunde)

das geht aber leider nicht (auch wenn ich Max() mit AS  benenne)

was mache ich falsch?

  1. Hello,

    SELECT  thema, MAX(Epochensekunde)
                   FROM tabelle
                   GROUP BY thema
                   ORDER BY Epochensekunde

    So müsste das gehen.

    Liebe Grüße aus http://www.braunschweig.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    1. Moin!

      Hello,

      SELECT  thema, MAX(Epochensekunde)
                     FROM tabelle
                     GROUP BY thema
                     ORDER BY Epochensekunde

      So müsste das gehen.

      Nein. Die Sortierspalte heißt nicht "Epochensekunde", sondern "MAX(Epochensekunde)", wobei dieser Name gerne mit der Aggregatsfunktion kollidiert.

      Deshalb: Alias-Name für die MAX-Spalte vergeben und den verwenden.

      SELECT thema, MAX(Epochensekunde) as zeit FROM tabelle GROUP BY thema ORDER BY zeit

      - Sven Rautenberg

      --
      "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
      1. Hello Sven,

        Nein. Die Sortierspalte heißt nicht "Epochensekunde", sondern "MAX(Epochensekunde)", wobei dieser Name gerne mit der Aggregatsfunktion kollidiert.

        Deshalb: Alias-Name für die MAX-Spalte vergeben und den verwenden.

        SELECT thema, MAX(Epochensekunde) as zeit FROM tabelle GROUP BY thema ORDER BY zeit

        Ja, das ist nachvollziehbar und hätte ich auch so gemacht, wenn Boris nicht geschrieben hääte, dass da bei ihm nicht klappt.

        Meinen Vorschlag hatte ich mit meiner Testdatenbank ausprobiert und er hat funktioniert. Nun frage ich mich aber, warum

        SELECT  ID_TEST, VARC, count(VARC) as MENGE, MAX(UPDATETIME1) as ZEIT
        FROM TEST
        GROUP BY VARC
        ORDER BY ZEIT;

        So wäre es dann also richtig und so funktioniert es auch.

        Nun habe ich gerade eben noch was merkwürdiges festgestellt. Die Spalte VARC ist ein VarChar (was auch sonst) und es gibt auch Zeilen, in denen VARC == NULL ist. Die werden nicht mitgezählt. Es wird zwar in die Gruppierung genau eine Zeile mit NULL aufgenommen, aber MENGE bleibt 0.

        Muss das so sein oder habe ich da wieder einen Denkfehler drin (oder ist es vielleicht sogar ein Bug)?

        Liebe Grüße aus http://www.braunschweig.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      2. SELECT  thema, max(epochensekunde) as epochensekunde
                      FROM tabelle
                      GROUP BY thema
                      ORDER BY epochensekunde desc

        ES LÄUFT!!! Vielen, vielen dank für die hilfe!!! so leicht ist das manchmal!!!

        ich hatte letztens den fehler gemacht und DESC in die GROUP BY zeile gesetzt und dabei nicht erkannt dass alles ja schon eigentlich richtig war. DESC macht ja, wenn ich jetzt so überlege ja auch nur bei ORDER BY sinn.

        1000dank euch beiden, hab es schon ins abfragescript eingebaut, läuft supergut :)))

        ich hatte schon befürchtet, ich müsse die daten mit dem client-perlscript sortieren (schaurige vorstellung). Mich freut aber total, dass ich als anfänger in SQL, schon auf dem richtigen weg war und eigentlich das prinziep der abfrage verstanden hab (ich werde immer so unsicher, ob mein ansatz überhaupt der richtige ist)

        ich wünsche euch auch einen sortierten tag,
        Boris