webForumDet fria alternativet

Top tio?

Databaser & SQL

12 svar · 279 visningar · startad av webbmannen

Medlem sedan dec. 1999826 inlägg
Frågan#1

Den här raden:

SQL = "SELECT [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY [ref]"

fixar så att jag får refererande siter sammanräknade och presenterade i en tabell.

Nu blir det ju lite mycket med tiden, och jag undrar hur man skriver för att bara visa tex de 10 siter med flest träffar listade med högst antal överst.

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan dec. 200012 464 inlägg
#2

Så här kanske


SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY links desc"

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 1999826 inlägg
#3

Bra försök LarsG men det gick inte:

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan dec. 200012 464 inlägg
#4

Access, hmm.
Så här då

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 1"

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 1999826 inlägg
#5

Fortfarande så listas inte de med flest träffar i fallade skala.

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan juni 200032 967 inlägg
#6

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 1 DESC"

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
if i'm not back in five minutes, just wait longer.</A>

Medlem sedan dec. 1999826 inlägg
#7

Jag har, redan innan mitt första inlägg, försökt med både top 10 och DESC.

Problemet som inte är löst är att DESC inte påverkar de sammansräknade träffarna links utan går på de senaste [ref].

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan dec. 200012 464 inlägg
#8

Strulade lite, sorry.

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 2 desc"

Siffran anger att man skall sortera efter andra kolumnnen i select-listan

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 1999826 inlägg
#9

Aha! nu lärde jag mig något nytt :)

Förstod inte vad siffran hade för betydelse tidigare men är nu lite klokare. Det fungerade dessutom :e

Däremot så ville nu plötsligt inte "top 10" fungera längre :q Finns det ett annat sätt att skriva detta på eller måste jag göra en loop och på det sättet begränsa antalet visade poster?

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan dec. 200012 464 inlägg
#10

Top 10 betyder att man får 10 plus delningar så det kan bli mer än 10 om du har flera länkar med samma antal träffar.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 1999826 inlägg
#11

Oki fattar, men det finns alltså inget annat alternativ än en loop om man som jag har, flera träffar på samma antal, och endast vill visa de tio med högsta antalet? (dvs. bryta just där trots att det finns fler med samma antal).

/webb

------------------
Vem ska du göra glad imorgon?

Medlem sedan dec. 200012 464 inlägg
#12

Ja det är ett sätt att bryta loopen, men i ditt fall så skulle du kunna ta med Ref-kolumnen i order by och då skulle det inte bli någon delning.

SQL = "SELECT top 10 [Ref], COUNT(*) AS links FROM statistik GROUP BY [Ref] ORDER BY 2 desc, 1 "

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 1999826 inlägg
#13

Stort tack LarsG, du har lärt mig nyttiga saker idag :)

/webb

------------------
Vem ska du göra glad imorgon?

259 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)