Michael Schröpl: (MySQL) richtige Anweisung gesucht

Beitrag lesen

Hi Andreas,

select max(laenge) as lang, schnitt, name from highscore
group by name order by lang desc;

ich habe Dein DB-Schema nicht ganz verstanden.
Aber Dein Problem klingt so, als würdest Du auch auf der rechten Seite
_einen_ Datensatz aus Deiner Tabelle holen wollen.
Das tust Du aber nicht - Du mischst gespeicherte und berechnete Werte
(weil Du "max" verwendest).

Was Du tatsächlich willst, ist,

  • zuerst die Datensätze nach Spielern zu gruppieren,
  • davon aber jeweils nur den einen Datensatz mit dem höchsten Wert zu
      nehmen (DISTINCT, ORDER BY, LIMIT 1?), und
  • das Ergebnis dieser Auswahl dann wiederum nach dem Wert zu sortieren.

Ich weiß im Moment nicht, ob diese doppelte Sortierung mit einem einzigen
SELECT geht; es kann sein, daß dafür ein SubSelect erforderlich wäre, was
mySQL nicht direkt unterstützt.
In diesem Fall könntest Du aber den ersten SELECT in eine temporäre Tabelle
lenken und aus dieser mit dem zweiten die endgültige Sortierung heraus-
fischen.

Viele Grüße
      Michael