Gero: MySQL - Sortierung nach 2 Kriterien abwärts (Feldern)

Hallo,

ich versuche Datensätze zu selektieren, die zuerst nach Datum sortiert werden und diese Datensätze sollen dann nach Wert sortiert sortiert werden. Leider mach ich was falsch und hoffe hier auf den richtigen Denkanstoss :)

SELECT gruppe, wert  
FROM `gruppen_daten`  
ORDER BY datum_eintrag DESC , wert DESC LIMIT 20 

Das liefert mir aber immer nur Werte nach dem Datum sortiert. Der Wert wird überhaupt nicht beachtet.

Wo liegt der Fehler?

Danke

  1. moin,

    Das liefert mir aber immer nur Werte nach dem Datum sortiert. Der Wert wird überhaupt nicht beachtet.

    Wo liegt der Fehler?

    was heißt den wird nicht beachtet. die sortierung über die "wert spalte" ist nur dann relevant, wenn zwei datumswerte sich gleichen. sind alle datumswerte unterschiedlich, dann spielt die sortierung nach den wert nur augenscheinlich keine rolle. wie auch, er sortiert ja erst mal nach datum und danach erst nach der zweiten spalte.

    Ilja

    1. » was heißt den wird nicht beachtet. die sortierung über die "wert spalte" ist nur dann relevant, wenn zwei datumswerte sich gleichen. sind alle datumswerte unterschiedlich, dann spielt die sortierung nach den wert nur augenscheinlich keine rolle. wie auch, er sortiert ja erst mal nach datum und danach erst nach der zweiten spalte.

      Ilja

      Die Werte kommen regelmäßig per Cronjob. Daher haben sie oft ein identisches Datum, doch nicht zwingend immer.
      Da ich jedoch immer die letzten 20 Einträge benötige, habe ich gedacht ich sortiere Datum abwärts, dann eben die Werte (brauch ich auch abwärts) und limitiere das auf 20 Einträge.

      Aber da denke ich wohl falsch ;)

      Wie kann ich das denn sonst lösen?

      Vielen Dank

      1. Hoi!

        Wieso? Ist doch korrekt. Wenn Du die letzten 20 Eintraege brauchst sortierst du absteigend nach Datum. Das klappt doch auch? Die Werte koennen aber nicht sortiert sein, wenn sie nicht das gleiche Datum besitzen. Hoechstens zufaellige Sortierungen sind moeglich:

        03-aug-2010 | 3
        02-aug-2010 | 5
        02-aug-2010 | 4
        01-aug-2010 | 7

        wuerde z.B. ein Ergebins deines Queries sein. Was stimmt daran nicht, oder was macht dein Query anders?

        --
        Ich bin dafuer verantwortlich was ich sage, nicht dafuer, was Du verstehst.
      2. moin,

        Da ich jedoch immer die letzten 20 Einträge benötige, habe ich gedacht ich sortiere Datum abwärts, dann eben die Werte (brauch ich auch abwärts) und limitiere das auf 20 Einträge.

        mir ist noch nicht ganz klar, was du machen willst, erst mal nach dem Datum die letzten 20 holen. und wenn du sie dann hast unabhängig vom datumswert alle 20 einträge nach den werten zu sortieren ? das würde natürlich auch gehen, eben nur anders....

        Ilja

  2. Hi,

    SELECT gruppe, wert

    FROM gruppen_daten
    ORDER BY datum_eintrag DESC , wert DESC LIMIT 20

    
    >   
    > Das liefert mir aber immer nur Werte nach dem Datum sortiert. Der Wert wird überhaupt nicht beachtet.  
      
    Ist datum\_eintrag wirklich nur ein Datum, oder hängt da auch noch eine (jeweils unterschiedliche) Uhrzeit mit dran?  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?