"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

ASP & Statistik

Cyberlord 14.03.2002 - 03:55 1274 17
Posts

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
Ich hab mit ASP eine Tabelle erstellt. In dieser Tabelle ist ersichtlich, welche IP-Adressen zu welcher Zeit zugegriffen haben.
Jetzt möchte ich diese Liste zusammenfassen und nur die Top 10 IP-Adressen (also wer am häufigsten in der Liste aufscheint) anzeigen lassen und nach der häufigkeit sortieren.
Hab mir überlegt, daß das nur mit einem Array zu verwirklichen sein kann. Habe aber keine Ahnung wie ich das genau anstellen soll.

Für jeden Tip wäre ich sehr froh!

Joshua

transparent nobody
Avatar
Registered: Dec 2000
Location: dahoam
Posts: 833
ASP :D :D :D :D :p :confused: :rolleyes: :cool: :eek: :mad: :( :( :D :rolleyes: :confused: :eek:

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
Lern du zuerst amoi HTML.
*g*

Joshua

transparent nobody
Avatar
Registered: Dec 2000
Location: dahoam
Posts: 833
für was brauchst du a statistik auf deiner Site?

Damit siehst wann du selbst drauf warst? :D :D :D :D

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
*g*

Wenn wer einen Tip hat bitte schreiben, und nicht nur spammen.

Joshua

transparent nobody
Avatar
Registered: Dec 2000
Location: dahoam
Posts: 833
Zitat von Cyberlord
*g*

Wenn wer einen Tip hat bitte schreiben, und nicht nur spammen.

Spammen? was ist das? :eek: :D :confused:

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
aaalso: entweder du rechnest ganz stupid für jede gefundene IP im recordset in einem array +1 - das wird aber sehr unschön, wenns mehr als 10 verschiedene ips sind.

alternativ kannst du auch einen "count" im sql-statement machen.

also schleife, die für jede gefundene ip adresse (zu finden per "select distinct f_ip from t_table") einen "select count (f_ip) from t_table where f_id = 'gefundene ipadresse')" macht.

jo, so gehts. gibt sicher noch performantere lösungen (per stored procedure usw), aber so gehts auf die schnelle auch. :)

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
Ah danke!

Werds mit DISTINCT probieren.
thx

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von Cyberlord
Ah danke!

Werds mit DISTINCT probieren.
thx

das schlüsselwort "distinct" bringt dir aus einer table mit vielen ip adressen jede ip adresse genau ein mal.

dann weißt du, wieviel unterschiedliche besucher auf deiner seite waren.

für jede dieser eindeutigen adressen kannst du dann einen "count" machen.

aber das hab ich eh schon oben geschrieben :)

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
Habs jetzt so geschrieben:

<%
Set conn = Server.CreateObject("ADODB.Connection")
strconn = "database1"
conn.Open = strconn
sql="select distinct ip from history"
set RS1 = conn.Execute(sql)

do until RS1.eof
Response.Write RS1("ip")
iptemp = RS1("ip")

sqltop="select count(*) as counter from history where ip='" & iptemp & "'"
set RS2 = conn.Execute(sqltop)

do until RS2.eof
response.write "  " & RS2("counter") & "<br>"
RS2.movenext
loop

RS1.movenext
loop


RS1.close
RS2.close
conn.close
%>

Jetzt hab ich eine SQL-Abfrage in einer SQL-Abfrage.
Ist sicher nicht das Beste. Gehts vielleicht anders auch?
Wie kann ich jetzt nach "Counter" sortieren? Das ist ja jetzt kein normaler Spaltenname.

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
@ rettich

Hab jetzt den richtigen SQL-Befehl:

SELECT count(history.ip) as Anzahl_IP, history.ip FROM history RIGHT JOIN history AS history1 ON history.ip = history1.ip GROUP BY history.ip ORDER BY count(history.ip) DESC

So funkts, und nicht anders.
Danke trotzdem!

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
hehe, klar funkts so auch; aber anders auch :)

performanter ist natürlich das zweite, weils direkt vom server aufgelöst wird.

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
OMFG! leute kennts ihr kein Group by?
select ip, count(*) from history group by ip order by count(*) limit 10;

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
Zitat von .deRElict.
OMFG! leute kennts ihr kein Group by?
select ip, count(*) from history group by ip order by count(*) limit 10;

erstens sagst ma, wie ich auf an mssql server ein limit mach und
zweitens macht das group by so nicht ganz das richtige :confused:

ah, wart, doch. stimmt schon. :)

Cyberlord

Big d00d
Avatar
Registered: Jul 2001
Location: Vienna, Austria
Posts: 153
thx

Funkt jetzt so auch.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz