Announcement

Collapse
No announcement yet.

Sortierung mit group by

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Sortierung mit group by

    Hallo und guten Abend,

    ich habe eine Tabelle mit 3 Feldern: Name,Punkte,Fehler
    in die Datenbank befinden sich einige mehrfache Namenseinträge.
    Jetzt möchste ich diese so sortieren, dass der Name nur einmal erscheint mit den meisten punkten und den wenigsten Fehlern.

    mein Ansatz 1:

    Code:
    SELECT
    * FROM highscore
    ORDER BY
    Fehler ASC,
    Punkte DESC				
    LIMIT 16";
    bringt schon mal die richtige Reihenfolge. allerding sind Mitspieler noch mehrfach gelistet, diese dürfen aber nicht doppelt erscheinen, sondern nur 1x mit den besten Ergebnissen also die meisten Punkte und die wenigsten Fehler.

    Code:
    SELECT * FROM highscore GROUP BY Name ORDER BY Punkte DESC, Fehler ASC LIMIT 16
    funktioniert auch nicht, da da nur die doppelten Namens-Datensätze gelöscht werden aber nicht zuerst die Sortierung erfolgt.

    z.B.

    ID,Punkte,Fehler
    1,Bernd,25,14
    2,Bernd,26,15
    3,Bernd,25,11

    Rückgabe ist ID1 weil 2und3 gelöscht und gar nicht beachtet werden. ID2 wäre aber richtig. Ohne Group by wird zwar richtig sortiert aber ich habe den spieler 3x und nicht seinen besten Wert.

    Danke schon mal

  • #2
    Hallo,

    schonmal die Suche bemüht? Fragen mit dieser Problematik wurden hier schon mehrfach diskutiert. z.B.: Höchsten Wert ausgeben

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Vielen Dank für den Tipp, gesucht hatte ich schon nur mit den falschen Begriffen. Dank Deiner Hilfe konnte ich es so lösen und es funktioniert:

      Code:
      "SELECT
      Name AS Name,
      MAX(Punkte) AS Punkte,
      MIN(Fehler) AS Fehler
      FROM highscore
      GROUP BY
      Name
      ORDER BY
      Fehler ASC,
      Punkte DESC				
      LIMIT 16";
      Vielen Dank nochmal.

      Comment

      Working...
      X