höchsten wert bei GROUP BY anzeigen
jo
- php
-1 Oliver Orsteck0 Lachgas0 Vinzenz Mai
guten morgen alle miteinand,
Folgender query zeigt die Liste aller Spieler mit Punktzahl an.
$q="SELECT * FROM `player` GROUP BY `player_id` ORDER BY `score` DESC ";
Das Problem ist das nur der erste Wert (score) aus der Tabelle angezeigt wird, ich würde aber gerne den höchsten Wert anzeigen.
Kann ich noch eine Kondition bei GROUP BY machen oder wie geht das ?
gruß
jo
Hallo
SELECT Maximum(Score) AS MaxScore FROM player Group BY player_id;
Gruß
Hallo jo!
Folgender query zeigt die Liste aller Spieler mit Punktzahl an.
Nein, du weist lediglich der Variablen $q einen Wert zu.
$q=[...];
~~~sql
SELECT * FROM `player` GROUP BY `player_id` ORDER BY `score` DESC;
Bitte verwende eine geeignete Syntaxdarstellung.
℆, ℒacℎgas
Hallo Jo,
SELECT * FROM player GROUP BY player_id ORDER BY score DESC ";
dieses Statement wird von so ziemlich jedem Datenbankmanagementsystem (DBMS) außer MySQL als fehlerhaft zurückgewiesen und nicht ausgeführt. In einer Abfrage mit GROUP BY dürfen nur Spalten vorkommen, nach denen gruppiert wird oder auf die eine [Aggregatsfunktion](http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html) angewendet wird.
> Das Problem ist das nur der erste Wert (score) aus der Tabelle angezeigt wird, ich würde aber gerne den höchsten Wert anzeigen.
Nein, es wird nicht der erste Wert angezeigt, es wird ein zufälliger Wert angezeigt, siehe [MySQL-Doku](http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-fields.html).
Verwende die Deinem Problem angemessene Aggregatsfunktion (die sieht fast so aus, wie der Tipp von Oliver).
Freundliche Grüße
Vinzenz