webForumDet fria alternativet
Logga in / Bli medlem

Upprepade problem med GROUP BY

Databaser & SQL

4 svar · 199 visningar · startad av quiz

Medlem sedan maj 20035 inlägg
Trådstart#1

Vad jag vill att SQL satsen ska göra:
Av de 30 senaste dagarnas registreringar ska den högsta poängen tas ut. Varje persons namn får endast förekomma en gång.
Tabellen heter highscore och fälten heter score, playername och regwhen.

SELECT MAX(score), score, playername, regwhen FROM highscore WHERE TO_DAYS(NOW()) - TO_DAYS(regwhen) <= 30 GROUP BY playername ORDER BY score DESC
Detta är mitt senaste försök som tyvärr inte fungerar.

Denna sats används nu:
SELECT playername, score, regwhen FROM highscore WHERE TO_DAYS(NOW()) - TO_DAYS(regwhen) <= 30 ORDER BY score DESC
Det jag saknar i denna är funktionaliteten för att ett och samma namn bara ska visas en gång i listan.
Serven använder MySQL 3.23.56.

Är det någon som har en idé om hur det skulle kunna lösas?

Medlem sedan juni 200312 inlägg
#2

Prova med:

SELECT DISTINCT playername,score,regwhen

//

Medlem sedan juli 2002145 inlägg
#3

Om du vill ha en rad per spelare blir du tvungen att utelämna regwhen. Det kan ju mycket väl hända att en spelare ligger på sitt maxresultat flera gånger... Om du utelämnar regwhen kan du formulera frågan så här

select playername, max(score)
from highscore
group by playername

Om du vill ha med regwhen kan du göra så här, men då kan det alltså bli fler rader per spelare, med olika regwhen-datum.

select playername, score, regwhen
from highscore hs
where score = 
  (
  select max(score)
  from highscore
  where hs.playername = playername
  )

Ditt where-villkor ska förstås med också! Även i subselecten.

Medlem sedan dec. 20003 563 inlägg
#4

subselecten fungerar dock inte på din version av mySQL

Medlem sedan maj 20035 inlägg
#5

Tack för de svar jag fått. Ska vänta med att lösa problemet tills webhotellet uppgraderar MySQL till 4.1

287 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)