Avatar billede larsbachmanndk Nybegynder
04. juni 2005 - 02:37 Der er 3 kommentarer og
1 løsning

Select top 100 distinct

Jeg sidder lige og nørkler med et statistik system i asp/access.

Jeg har en kolonne der hedder "refer" og vil gerne lave en top 100 liste over referers.

Jeg skal altså have en SQL sætning der tæller distinct referers og antal gange den pågældende referer findes.

Eksempel:

1. www.google.dk  hits 123
2. www.jubii.dk    hits 112
3. www.exp.dk      hits 34

osv.....
Avatar billede mentoz Nybegynder
04. juni 2005 - 07:13 #1
det nemmeste ville nok være at ændre databasen så den har 2 rækker, referer og antal, så kan du opdatere i selve databasen hver gang der kommer en ind fra den pågældene referer fx:

SQL = "Select * from referer where referer = '" & Request.ServerVariables("HTTP_REFERER") & "'"
Set RS = objConn.Execute(SQL)


if rs.EOF Then

' så skal der oprettes en i databasen
strSQL = "Insert into referer (referer, antal) values('" & Request.ServerVariables("HTTP_REFERER") & "','1')"
objConn.Execute(strSQL)

else

' så skal den opdateres
strAntal = rs("antal") + 1
strSQL = "UPDATE referer SET antal = '" & strAntal & "' Where referer = '" & Request.ServerVariables("HTTP_REFERER") & "'"
objconn.execute(strSQL)

end if


så kan man nemt lave en top 100:

<%
strSQL = "SELECT COUNT(*) AS Antal FROM referer"
Set RS = objConn.Execute(strSQL)

strAntal = rs("Antal")

if strAntal >= Then
strAntal = 100
end if

SQL = "Select * from referer order by antal"
Set RS = objConn.Execute(SQL)

dim t

t = 0
do until t = strAntal
%>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="500" id="AutoNumber1">
  <tr>
    <td width="50%"><% = rs("referer") %></td>
    <td width="50%"><% = rs("antal")%></td>
  </tr>
</table>
<%
rs.MoveNext
Loop
%>
Avatar billede mentoz Nybegynder
04. juni 2005 - 07:14 #2
<%
strSQL = "SELECT COUNT(*) AS Antal FROM referer"
Set RS = objConn.Execute(strSQL)

strAntal = rs("Antal")

if strAntal >= 100 Then
strAntal = 100
end if

SQL = "Select * from referer order by antal"
Set RS = objConn.Execute(SQL)

dim t

t = 0
do until t = strAntal
%>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="500" id="AutoNumber1">
  <tr>
    <td width="50%"><% = rs("referer") %></td>
    <td width="50%"><% = rs("antal")%></td>
  </tr>
</table>
<%
rs.MoveNext
Loop
%>

så er den nederste rigtig... kl er jo også mange
Avatar billede larsbachmanndk Nybegynder
05. juni 2005 - 15:44 #3
> Mentoz

Jeg har valgt at konstruere databasen således at jeg kan bruge dit første eksempel.
Og det virker :-)

Du får selvfølgelig point, men jeg har lige et tillægs spørgsmål?

Når jeg nu henter en top100, så vil jeg gerne have sorteret alle dem fra hvor mit eget domæne indgår.

f.eks. er der en masse referer der bare hedder www.domæne.dk/enellerandenside.asp

men jeg kan vidst ikke bruge "not like" med access
Avatar billede larsbachmanndk Nybegynder
05. juni 2005 - 16:30 #4
Jeg fik løst problemet..

SQL = "Select top 100 * from referer where refer not like '%" & Domain & "%' order by antal DESC"
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