Du kan ju lägga in uttrycket direkt i order by om du vill
order by
(userIn + (userOut/5)) / (DateDiff('h',userStart,Now())) desc
3 svar · 194 visningar · startad av joakimweb
Hej!
Jag tänkte göra en topplista som sorteras utefter ett slags index baserat på följande:
tbl_toplist_users
userId
userIn
userOut
userStart (nollställs varje söndag)
Detta index skulle rent matematiskt skapas enligt följande:
(userIn + (userOut/5)) / (DateDiff(userStart -- Now))
Alltså att userIn har störst betydelse och att ju längre tid som gått desto fler röster behövs för att bibehålla sitt index-tal. Detta gör det också möjligt för nya användare att gå med enkelt.
Jag har ärligt talat ingen aning om hur det skall lösas i SQL.
"SELECT userId, userIn, userOut FROM `databas2`.`tbl_toplist_users` Order By userIn DESC limit 15"
Är grunden.
Tacksam för allt!
Du kan ju lägga in uttrycket direkt i order by om du vill
order by
(userIn + (userOut/5)) / (DateDiff('h',userStart,Now())) desc
Tack LarsG, dock är versionen 4.0.x (slarvigt av mig att inte ange)
Unix_timestamp eller nåt finns, men hur skulle det användas?
Eller finns det något ännu bättre?
/Joakim
Ett stort tack till alla!
Jag löste det så här:
SELECT *, (userIn + (userOut/5)) / ((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(userFrom))/60/60) As userIndex FROM `db2`.`tbl_toplist_users` Order By userIndex DESC, userId ASC limit 15"
/Joakim