Avatar billede Slettet bruger
02. marts 2012 - 11:51 Der er 9 kommentarer og
1 løsning

Tæl hits og udtræk af specifik bruger?

Jeg har et lille forum med hits. Jeg prøver at lægge den enkeltes brugeres hits sammen fra tabellen "indlaeg" - hvis bruger har flere indlæg - og vil efterfølgende trække brugerID=navne ud fra tabellen "bruger" i en løkke, så jeg får udskrevet dem med flest hits først og evt. antal hits også.

Problemet er vist nok DISTINCT og SUM(hits), er det rigtigt, og har nogen en løsning?


<%

strSQL="Select SUM(hits), DISTINCT brugerID FROM indlaeg"
set rs = Conn.execute(strSQL)
brugerID=rs("brugerID")

Do While Not rs.EOF

strSQL = "select * from bruger where brugerID = '" & brugerID & "'"     
set rs2 = Conn.execute(strSQL)

brugernavn=rs2("brugernavn")

response.Write brugernavn

rs.MoveNext
Loop

rs.Close
Set rs = Nothing
%>
Avatar billede softspot Forsker
02. marts 2012 - 12:10 #1
Jeg er ikke helt sikker på hvad du vil opnå, men det lyder umiddelbart som om du kunne drage fordel af GROUP BY til at gruppere dine brugere (i stedet for DISTINCT). Desuden kunne du måske endda hente brugernavnet ud i samme arbejdsgang, så du slipper for at kalde databasen 4711 gange (cirka):

sqL = "SELECT SUM(hits), brugerid, brugernavn " & _
      "FROM indlaeg " & _
      "GROUP BY brugerid, brugernavn"
set rs = Conn.Execute(sql)


Så burde du bare kunne iterere over resulatet af dette udtræk og udskrive brugernavnet.

Do While Not rs.EOF 
    response.Write rs("brugernavn") & "<br/>"

    rs.MoveNext
Loop

rs.Close
Set rs = Nothing
Avatar billede softspot Forsker
02. marts 2012 - 12:16 #2
Ach! Der skal nok en JOIN til for at få fat i brugernavnet :)

sqL = "SELECT SUM(i.hits), i.brugerid, b.brugernavn " & _
      "FROM indlaeg AS i " & _
      "INNER JOIN bruger AS b ON b.brugerid = i.brugerid " & _
      "GROUP BY i.brugerid, b.brugernavn"
Avatar billede Slettet bruger
02. marts 2012 - 12:28 #3
Groupfunktion er nyt for mig:-) I tabellen "indlaeg" er der ikke noget brugerNAVN, kun brugerID som kan identificere brugeren, som jeg skal bruge til at hive brugerNAVNET ud af tabellen "bruger", efterfølgende. Jeg bruger en phpMySql db, hvis det har betydning. Den ny kode ser sådan ud, direkte fra dig, men jeg får fejlbeskeden "invalid caracter".

<%
sqL = "SELECT SUM(i.hits), i.brugerid, b.brugernavn " & _  "FROM indlaeg AS i " & _ "INNER JOIN bruger AS b ON b.brugerid = i.brugerid " & _ "GROUP BY i.brugerid, b.brugernavn"


Do While Not rs.EOF   

response.Write rs("brugernavn") & "<br/>"   


rs.MoveNext

Looprs.CloseSet

rs = Nothing

%>
Avatar billede softspot Forsker
02. marts 2012 - 13:08 #4
Jeg har desværre ikke nogen erfaring med MySQL, så der ved jeg ikke om den syntaks jeg har brugt vil fungere ifm. MySQL...
Avatar billede Slettet bruger
02. marts 2012 - 13:13 #5
jeg er også ny i MySql, så jeg har kun sparsom viden om den db, men tak for hjælpen indtil videre og god weekend.

Nogen andre som har et bud på dette problem, eller som ved om softspot's kode burde virke i MySql?
Avatar billede Slettet bruger
03. marts 2012 - 17:06 #6
Umiddelbart ser det ud som om softspot har givet den rigtige løsning til et sql statement.

Jeg tror det er din kode der giver fejlen og ikke dit sql statement. Medmindre du har koden delt op i flere linjer på samme måde som softspot viste, så tror jeg du skal fjerne dine underscores.
Avatar billede Slettet bruger
03. marts 2012 - 17:20 #7
I øvrigt (når du har fået det til at virke), mangler der en sortering så dem med flest hits kommer først. Det kan du gøre ved at tilføje "ORDER BY SUM(i.hits) DESC" i slutningen.
Avatar billede Slettet bruger
03. marts 2012 - 17:41 #8
jamen, det vil jeg da kigge på, tak for det:-)
Avatar billede Slettet bruger
04. marts 2012 - 09:22 #9
Efter massevis af forsøg og kig i andre indlæg her på eksperten, uden held, er jeg ikke kommet videre som jeg skriver fre. d. 02. marts 2012 kl. 12:28:33| #3, er der nogen derude som kan guide mig videre?
Avatar billede Slettet bruger
01. april 2012 - 09:49 #10
lukker
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