quizMedlem sedan maj 20035 inlägg 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?
Prova med:
SELECT DISTINCT playername,score,regwhen
//
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.
cyprysMedlem sedan dec. 20003 563 inlägg subselecten fungerar dock inte på din version av mySQL
quizMedlem sedan maj 20035 inlägg Tack för de svar jag fått. Ska vänta med att lösa problemet tills webhotellet uppgraderar MySQL till 4.1