Avatar billede Slettet bruger
06. oktober 2003 - 12:19 Der er 6 kommentarer og
1 løsning

Vis top 10

Hej

Jeg har et script (her SQL) der skal vise top 10 brugere - dvs. de 10 brugere der har skrevet flest beskeder.

Problemet er at vis eks. bruger nr. 9, 10, 11 og 12 alle har sendt 1 besked vises de på listen alligevel. Listen stopper med andre ord ikke ved de 10 brugere, fordi der er flere (eks. bruger nr. 9, 10, 11 og 12) der har sendt samme antal. Derfor vil jeg gerne tilføje en ekstra sortering - eks. på brugernavn.

SQL = "SELECT TOP 10 Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, brugere.brugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn, brugere.brugerid ORDER BY Count(beskeder.frabrugerid) DESC;"
Avatar billede erikjacobsen Ekspert
06. oktober 2003 - 12:24 #1
... ORDER BY Count(beskeder.frabrugerid),beskeder.frabrugerid DESC
Avatar billede Slettet bruger
06. oktober 2003 - 12:46 #2
Det giver flg. fejl:

[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'beskeder.frabrugerid' as part of an aggregate function.

/test/top10.asp, line 12 == SQL

Med flg. SQL

SQL = "SELECT TOP 10 Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, brugere.brugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn, brugere.brugerid ORDER BY Count(beskeder.frabrugerid),brugere.brugernavn DESC"

kommer det til at stå på "hovedet" - altså viser den der har skrevet færrest beskeder øverst...
Avatar billede erikjacobsen Ekspert
06. oktober 2003 - 13:03 #3
beskeder.frabrugerid erstattes måske med brugere.brugerid
Avatar billede Slettet bruger
06. oktober 2003 - 13:08 #4
nej - den oprindelige SQL gjorde det fint nok - bortset fra at den smed mere end 10 på. Problemet er vel at

ORDER BY Count(beskeder.frabrugerid) skal være DESC mens brugere.brugernavn skal være ASC i slutningen af SQL'en

SQL = "SELECT TOP 10 Count(beskeder.frabrugerid) AS antalBeskeder, brugere.brugernavn, brugere.brugerid as dbbrugerid FROM brugere INNER JOIN beskeder ON brugere.brugerid = beskeder.frabrugerid WHERE sms = true GROUP BY brugere.brugernavn, brugere.brugerid ORDER BY Count(beskeder.frabrugerid),brugere.brugernavn DESC"
Avatar billede erikjacobsen Ekspert
06. oktober 2003 - 13:12 #5
Count(beskeder.frabrugerid) DESC,brugere.brugernavn ASC

?
Avatar billede Slettet bruger
06. oktober 2003 - 13:22 #6
så var den der vist - svar venligst
Avatar billede erikjacobsen Ekspert
06. oktober 2003 - 13:25 #7
ok ... jeg troede der var noget mere alvorligt galt ;)
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
Kurser inden for grundlæggende programmering

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