Ik heb de volgende query:
SELECT t.score, p.login, p.nickname, p.id FROM times AS t, players AS p WHERE p.id = t.playerID AND t.challengeID = 7 GROUP BY t.playerID ORDER BY t.score ASC

Iedere playerID in de tabel times heeft meerdere tijden op dezelfde baan. Nu selecteert dit script wel maar 1 tijd voor iedere speler, maar de tijd die het script selecteert is niet de beste van die speler. Het is gewoon de eerste tijd die die speler gereden heeft. Dus hoe zorg ik ervoor dat ie voor iedere speler apart ook nog eens de beste tijd selecteert?
Wat je in zo'n gevallen kan doen: neem een select van een select.

Een voorbeeld (activiteiten gegroepeerd per organisator, met telkens het record met het meest aantal gasten op die activiteit)


SELECT *   
FROM 
  (
    SELECT *   
    FROM activiteiten
    ORDER BY aantal_gasten DESC
  ) as t1
GROUP BY organisator
ORDER BY organisator


Zo kan je eerst de middelste select sorteren op aflopende score en de buitenste select groepeert alles zoals het hoort.

Kan je daarmee zelf je sql aanpassen?

EDIT:

Ik denk dat het zo-iets zou moeten worden:

SELECT t.score, p.login, p.nickname, p.id 
FROM 
  (
    SELECT t.score, p.login, p.nickname, p.id 
    FROM times AS t, players AS p 
    WHERE p.id = t.playerID AND t.challengeID = 7 
    ORDER BY t.score ASC 
  ) AS t1 
GROUP BY t.playerID 


Soms moet je wel oppassen met de alias. Zie dat de alias herkend wordt (wat lastig uit te leggen op een aantal woorden) ...

Ik kan het echter niet zomaar testen.
Het is op een soortgelijke manier gelukt, ik heb de scores tussen haakjes gezet met een ORDER en dat AS t. Dus eigenlijk is alleen het times AS t gedeelte nu anders. Ty voor de tip
Plaats even stukje code dan. Dan kunnen anderen er nog eens op terug kijken.

Reageren