Avatar billede puppetmaster Nybegynder
05. august 2002 - 14:09 Der er 12 kommentarer og
2 løsninger

10 mest populære artikler

I min artikeldatabase er oprettet en historik-tabel (Historik), som indeholder følgende:

Id (autonummering, Primary Key)
Dato
Artikler_Id
user_id

Jeg søger en funktion, regner sammen hvor mange gange de enkelte Artikler_Id forekommer og udskriver de 10 "mest forekommende". Hvordan gør jeg det nemmest?
Avatar billede puppetmaster Nybegynder
05. august 2002 - 14:11 #1
Jeg forestiller mig noget i stil med at lægge summen af de enkelte Artikler_Id forekomster i et array, sortere dette, udvælge de 10 "største" og udskrive de artikler der passer på Artikler_Id'et.
Avatar billede cthun Nybegynder
05. august 2002 - 14:23 #2
Du laver et felt mere i din db der hedder noget alle "antalgangevist" (Skal være tal-format)

Hver gang du viser en artikel laver du en update function..

eks.

strSQL = "select * from database where id = " & request.querystring("id")
set rs = conn.execute(strSQL)

strSQLup = "update database set antalgangevist = " rs("antalgangevist") + 1
conn.execute(strSQLup)
Avatar billede cthun Nybegynder
05. august 2002 - 14:25 #3
strSQLup skal selvfølgelig ændres til

strSQLup = "update database set antalgangevist = " & rs("antalgangevist") + 1
conn.execute(strSQLup)
Avatar billede cthun Nybegynder
05. august 2002 - 14:29 #4
Når du så skal have vist din top 10 skriver du!!

strSQL = "SELECT top 10 antalgangevist from database order by antalgangevist desc"
set rs=conn.execute(strSQL)
minVar = 1

Do while not rs.eof

response.write minVar & ": " & rs("dato")
minVar + 1
rs.movenext
Loop
Avatar billede puppetmaster Nybegynder
05. august 2002 - 14:40 #5
Nu er der jo det ved det, at et givent Artikel_Id allerede optræder mange gange (i teorien uendeligt mange gange pr. bruger), så jeg vil helst bare have hentet hvor mange gange et givent Artikel_Id optræder i tabellen...
Avatar billede puppetmaster Nybegynder
05. august 2002 - 14:49 #6
Avatar billede puppetmaster Nybegynder
05. august 2002 - 14:52 #7
Hmmm.....og alligevel ikke....
Avatar billede eagleeye Praktikant
05. august 2002 - 15:03 #8
Det letest er umidbart at lave en SQL sætning som kan give det hele:

SQL = "SELECT TOP 10 Count(Artikler_Id) AS AntalArtikler, Artikler_Id FROM Historik GROUP BY Artikler_Id ORDER BY Count(Artikler_Id) DESC;"

set rs=conn.execute(strSQL)
minVar = 1
nr = 1
Do while not rs.eof
  Response.write nr & ".: artikel ID: " & rs("Artikler_Id") & " antal: " & rs("AntalArtikler") & "<br>"
  nr = nr + 1
  rs.movenext
Loop
Avatar billede puppetmaster Nybegynder
05. august 2002 - 15:06 #9
Eagleeye, jeg kigger på det.....har fri nu......
Avatar billede puppetmaster Nybegynder
06. august 2002 - 09:29 #10
Eagleeye, er det muligt at lave det sådan så det kører i en løkke, som kun viser de 10 første, også selv om f.eks. 100 artikler alle har lige mange hits?
(har prøvet et par forskellige ting, men synes ikke rigtig det virker.)
Avatar billede cthun Nybegynder
06. august 2002 - 09:32 #11
Så skal du page siden, så den kun viser 10 af gangen!!!

http://activedeveloper.dk/aspdigital/kapitel2/paging.asp
Avatar billede puppetmaster Nybegynder
06. august 2002 - 09:35 #12
Kigger lige på det, cthun
Avatar billede eagleeye Praktikant
06. august 2002 - 09:51 #13
Ja du kan tilføje nr til do while og stopper ved 10:


SQL = "SELECT TOP 10 Count(Artikler_Id) AS AntalArtikler, Artikler_Id FROM Historik GROUP BY Artikler_Id ORDER BY Count(Artikler_Id) DESC;"

set rs=conn.execute(strSQL)
minVar = 1
nr = 1
Do while (not rs.eof) AND (nr <= 10)
  Response.write nr & ".: artikel ID: " & rs("Artikler_Id") & " antal: " & rs("AntalArtikler") & "<br>"
  nr = nr + 1
  rs.movenext
Loop
Avatar billede puppetmaster Nybegynder
06. august 2002 - 10:18 #14
Takker mange gange, nu har jeg noget kode der kører, flest point til eagleeye, som leverede en kode tættest på det jeg er endt med, men også til cthun for det rigtig gode forslag...
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