Avatar billede radiohead Nybegynder
11. januar 2009 - 17:06 Der er 3 kommentarer og
1 løsning

Rangliste - Den mest hensigtsmæssige måde

Hej

Jeg er ved at lave en side hvor der figurerer en rangliste. Denne rangliste bliver loopet og sorteret efter et point-felt i brugerdata-tabellen.

Når man så vil se en anden brugers konto/profil, skal dennes stilling i ranglisten vises på profilen.
Men hvordan finder jeg vedkommenes placering i ranglisten mest hensægtsmæssigt?
Skal hente alle rækker i bruger-tabellen, sorterer dem faldende efter point og derefter finde vedkommendes rækkenummer i databasen? Det lyder nemlig ikke specielt performance-rigtigt i mine øre...?
Avatar billede jensgram Nybegynder
11. januar 2009 - 17:22 #1
Du kan vel nøjes med at hente antallet af brugere, der har flere point:

SELECT COUNT(id) FROM brugere WHERE cntPoint > (SELECT cntPoint FROM brugere WHERE id = brugerId)

Det viser dog blot, hvor mange der har flere point uden at tage hensyn til, at flere brugere kan have lige mange. (Det er imidlertid også en vurderingssag, om det så vil hedde e.g. 1,2,2,4 eller 1,2,2,3.)
Avatar billede jensgram Nybegynder
11. januar 2009 - 17:27 #2
Hmm - man kan faktisk også gøre det uden sub-queries:

SELECT COUNT(b1.id) FROM brugere AS b1, brugere AS b2 WHERE b1.cntPoint > b2.cntPoint AND b2.id = <brugerId>
Avatar billede radiohead Nybegynder
11. januar 2009 - 20:18 #3
Hmm ja, det er selvfølgelig smart.

Tak for det.

Læg svar.
Avatar billede jensgram Nybegynder
11. januar 2009 - 20:29 #4
!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester