URL: https://www.overclockers.at/coding-stuff/asp_amp_statistik_28551/page_1 - zur Vollversion wechseln!
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!
ASP

Lern du zuerst amoi HTML.
*g*
für was brauchst du a statistik auf deiner Site?
Damit siehst wann du selbst drauf warst?

*g*
Wenn wer einen Tip hat bitte schreiben, und nicht nur spammen.
Zitat von Cyberlord*g*
Wenn wer einen Tip hat bitte schreiben, und nicht nur spammen.

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. 
Ah danke!
Werds mit DISTINCT probieren.
thx
Zitat von CyberlordAh danke!
Werds mit DISTINCT probieren.
thx

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.
@ 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!
hehe, klar funkts so auch; aber anders auch 
performanter ist natürlich das zweite, weils direkt vom server aufgelöst wird.
OMFG! leute kennts ihr kein Group by?
select ip, count(*) from history group by ip order by count(*) limit 10;
Zitat von .deRElict.OMFG! leute kennts ihr kein Group by?
select ip, count(*) from history group by ip order by count(*) limit 10;


thx
Funkt jetzt so auch.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026