GROUP BY und ORDER BY Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • GROUP BY und ORDER BY Problem

    Hallo.
    War schon lange nicht mehr da, hab aber in Erinnerung behalten, dass ich hier meist zu einer guten Lösung geführt wurde.
    Hier mein aktuelles Problem:

    Code:
    select [B]ID[/B], [B]SUBID[/B], [B]STAMP[/B] from [B]TABELLE [/B]group by [B]SUBID [/B]order by [B]STAMP[/B]
    Leider bringt mir das nicht die gewünschte Reihenfolge, da das Group By vor dem Order By bereits zum tragen kommt. Weiß jemand, wie ich trotzdem zur Richtigung Reihung - sprich Sortierung nach der Spalte STAMP - kommen kann?

  • #2
    Die Spalten, nach denen du sortieren möchtest, müssen auch im GROUP BY stehen.

    Kommentar


    • #3
      Zitat von h3ll Beitrag anzeigen
      Die Spalten, nach denen du sortieren möchtest, müssen auch im GROUP BY stehen.
      Code:
      select ID, SUBID, STAMP from TABELLE group by SUBID, [B]STAMP[/B] order by STAMP
      Meinst du so? Dann wirft er mir ja wieder alle Zeilen aus, und nicht nur eine Zeile pro SUBID? Oder verstehe ich deine Antwort falsch?

      Kommentar


      • #4
        Wenn du Spalten im GROUP BY Ausdruck weglässt, kannst du ein nicht eindeutiges Ergebnis erhalten (was dir eben passiert ist). Andere Datenbanksystem würden bei dieser Abfrage eine Fehlermeldung werfen und sie erst gar nicht ausführen, nur MySQL ist so "gutmütig" und ignoriert das (liefert dann eben ein falsches Ergebnis).

        Ich nehme an, dass du keine Sortierung willst, sondern sowas:

        MySQL :: MySQL 5.0 Reference Manual :: 3.6.4 The Rows Holding the Group-wise Maximum of a Certain Column

        Kommentar


        • #5
          Ich scheine da wohl nicht ganz auf dem korrekten Weg zu sein.

          Dein angegebenes Beispiel trifft aber leider auch nicht zu.
          Vielleicht versuche ich es nochmals zu erklären.

          Es liegt nur eine Tabelle vor.
          In dieser Tabelle gibt es eine Tabellenspalte die ich eben gerne gruppieren wollte und von der ich dann immer die aktuellste Zeile (mittels Timestamp der bereits vorliegt) haben möchte - aber eben nur die aktuellste und nicht mehrere Zeilen.

          also nicht...

          subid 1 -> 00000000
          subid 1 -> 00000001
          subid 1 -> 00000002
          subid 2 -> 00000000
          subid 2 -> 00000001
          subid 2 -> 00000002
          subid 2 -> 00000003
          subid 3 -> 00000000
          subid 3 -> 00000001

          sondern nur

          subid 2 -> 00000003
          subid 1 -> 00000002
          subid 3 -> 00000001

          also nach STAMP sortiert und nach SUBID gruppiert.

          ich hoffe, ich konnte es jetzt eindeutig erklären? :-)

          Kommentar


          • #6
            so, ich glaube ich habe das problem nun selbst lösen können. hab hier bei anderen beiträgen noch tiefer geschnüffelt und bin auf LEFT JOIN gekommen, was auch mein problem zu lösen scheint!

            danke.

            Kommentar


            • #7
              Hättest Du Deine Lösung nicht auch posten können ?!

              Kommentar

              Lädt...
              X