Sorteren met Group BY wil net niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Quote Anchor link
Ik heb de volgende query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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?
 
PHP hulp

PHP hulp

23/04/2024 14:18:50
 
Emmanuel Delay

Emmanuel Delay

13/11/2009 17:49:00
Quote Anchor link
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)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
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.
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay
 
Quote Anchor link
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
 

13/11/2009 23:21:00
Quote Anchor link
Plaats even stukje code dan. Dan kunnen anderen er nog eens op terug kijken.
 
Klaasjan Boven

Klaasjan Boven

14/11/2009 11:11:00
Quote Anchor link
Je gebruikt GROUP BY iig niet juist
zie http://www.phphulp.nl/php/tutorials/3/521/
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.