|
| Hvordan laves en liste over de 10 flittigs~ Fra : Jakob Munck |
Dato : 08-09-01 07:03 |
|
Jeg har en lille asp-baseret kontaktforening, og her er der en tabel der
viser hvilke af medlemmerne der har logget sig ind og hvornår. Nu kunne jeg
så godt tænke mig at lave en "hitliste", hvor jeg opregner de 5 mest
flittige brugere af siten, f.eks. inden for de sidste 30 dage. Men hvordan
gør jeg det?
Jeg kender koden (count) til at tælle antallet af records i et recordsæt,
men hvordan laves en hitliste, hvor kun de records der optræder hyppigst
(inden for en given periode) er oplistet?
v.h.
Jakob Munck
| |
Anders Holbøll (08-09-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 08-09-01 14:18 |
|
Jakob Munck wrote:
>
> Jeg har en lille asp-baseret kontaktforening, og her er der en tabel
> der viser hvilke af medlemmerne der har logget sig ind og hvornår.
> Nu kunne jeg så godt tænke mig at lave en "hitliste", hvor jeg
> opregner de 5 mest flittige brugere af siten, f.eks. inden for de
> sidste 30 dage. Men hvordan gør jeg det?
SELECT TOP 5 ml.m_id, COUNT(*) AS m_logoncount, m.m_name
FROM memberlogon ml
INNER JOIN member m OM ml.m_id=m.m_id
WHERE ml.ml_date>dateadd(d, -30, getdate())
GROUP BY ml.m_id, m.m_name
ORDER BY COUNT(*) DESC
--
Anders
| |
Jakob Munck (08-09-2001)
| Kommentar Fra : Jakob Munck |
Dato : 08-09-01 23:13 |
|
Mange tak for denne SQL-kode, den er så avanceret, at jeg i stadet valgte at
opfinde en anden måde at måle login TOP 10 på, idet jeg installerede en
tællemekanisme ved hver enkelt bruger. Antallet af logins står nu i et tal
ved hver enkelt brugers record i databasen.
Men det giver mig så et andet problem, idet min SQL-kode skal udvælge de 10
brugere, der har det højeste tal i "antalLogin". Men hvis de brugere har det
samme tal (f.eks. 2 brugere der begge har været logget ind 4 gange), så skal
de sorteres indbyrdes efter ID-nummer.
Men hvordan er så SQL-koden for at lave både et primært og et sekundært
sorteringskriterium?
Jeg har skrevet sådan:
strSQL = "SELECT TOP 10 * FROM bruger where brugerNavn <> 'Webmaster' ORDER
BY antalLogin DESC"
Men den sorterer kun efter "antalLogin", altså hvor mange gange brugeren har
besøgt siten.
Hvordan tilføjer man til denne SQL-kode det sekundære sorteringskriterum,
som altså skal være "IDnr" ?
v.h.
Jakob Munck
| |
Anders Holbøll (08-09-2001)
| Kommentar Fra : Anders Holbøll |
Dato : 08-09-01 23:34 |
|
Jakob Munck wrote:
>
> Men det giver mig så et andet problem, idet min SQL-kode skal
> udvælge de 10 brugere, der har det højeste tal i "antalLogin".
> Men hvis de brugere har det samme tal (f.eks. 2 brugere der
> begge har været logget ind 4 gange), så skal de sorteres
> indbyrdes efter ID-nummer.
I "ORDER BY"-delen lister du blot de kolonner, der skal sorteres efter:
SELECT TOP 10 brugerId, brugerNavn, antalLogin
FROM bruger
WHERE NOT (brugerNavn = 'Webmaster')
ORDER BY antalLogin DESC, brugerId
--
Anders
| |
Jakob Munck (10-09-2001)
| Kommentar Fra : Jakob Munck |
Dato : 10-09-01 06:56 |
|
Mange tak !
jm
| |
MacMan (10-09-2001)
| Kommentar Fra : MacMan |
Dato : 10-09-01 17:55 |
|
I brevet "3b9a962b$0$270$edfadb0f@dspool01.news.tele.dk" skrev Jakob Munck
(jakob.munck@tdcadsl.dk) den 09/09/01 0:12:
> strSQL = "SELECT TOP 10 * FROM bruger where brugerNavn <> 'Webmaster' ORDER
> BY antalLogin DESC"
"SELECT TOP 10 * FROM bruger where brugerNavn <> 'Webmaster' ORDER BY
antalLogin DESC, IDnr"
| |
|
|