Seite 1 von 1
SQL-Abfrage für Statswert Ausstiegseiten
Verfasst: 24.05.2006, 21:31
von marky
Hallo,
ich entwickle gerade eine Statssoftware für mein CMS - es wird der Aufruf inkl. Datum, IP, Seite, Auflösung geloggt, jetzt würde ich gerne eine Liste der Top Einstiegs- und vorallem Ausstiegsseiten ausgeben und komme einfach nicht drauf, wie ich das per sql abfragen könnte.
Kann man da vielleicht jemand mit sql für mysql weiterhelfen bzw. mir einen Ansatz nennen, wie man die Listen umsetzen kann.
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 24.05.2006, 21:40
von net(t)worker
speicher jeweils den timestamp mit und fage den höchsten timestamp bei der jeweiligen ip adresse an und du hast deine ausstiegsseiten...
select ip, max(zeit) group by ip
und dann aufrufen welche url zu dem zeitpunkt von der ip aufgerufen wurde
url= deine seite
ip = IP Adresse
zeit= unix timestamp
Verfasst: 24.05.2006, 22:02
von oldInternetUser
net(t)worker hat geschrieben:speicher jeweils den timestamp mit und fage den höchsten timestamp bei der jeweiligen ip adresse an und du hast deine ausstiegsseiten...
select ip, max(zeit) group by ip
und dann aufrufen welche url zu dem zeitpunkt von der ip aufgerufen wurde
url= deine seite
ip = IP Adresse
zeit= unix timestamp
@net(t)worker, das ist nicht falsch, aber redundant. Da die Tabelle einen Primärschlüssel 'id' haben sollte, der automatisch hochgezählt wird, leistet dieser bereits das gewünschte. Vorzüge: Integer und bereits mit Index.
Verfasst: 24.05.2006, 22:27
von net(t)worker
oldInternetUser hat geschrieben:net(t)worker hat geschrieben:speicher jeweils den timestamp mit und fage den höchsten timestamp bei der jeweiligen ip adresse an und du hast deine ausstiegsseiten...
select ip, max(zeit) group by ip
und dann aufrufen welche url zu dem zeitpunkt von der ip aufgerufen wurde
url= deine seite
ip = IP Adresse
zeit= unix timestamp
@net(t)worker, das ist nicht falsch, aber redundant. Da die Tabelle einen Primärschlüssel 'id' haben sollte, der automatisch hochgezählt wird, leistet dieser bereits das gewünschte. Vorzüge: Integer und bereits mit Index.
primärschlüssel sollte natürlich vorhanden sein, muss aber nicht unbedingt ein hochzählendes int feld sein.... auch habe ich es schon erlebt, dass nicht unbedingt hochgezählt wurde, sondern die id von gelöschten datensätzen wieder verwendet wurde... also doch besser direkt dem timestamp nutzen...
Verfasst: 24.05.2006, 22:48
von oldInternetUser
net(t)worker hat geschrieben:primärschlüssel sollte natürlich vorhanden sein, muss aber nicht unbedingt ein hochzählendes int feld sein.... auch habe ich es schon erlebt, dass nicht unbedingt hochgezählt wurde, sondern die id von gelöschten datensätzen wieder verwendet wurde
Eine Tabelle mit so einer Datenstruktur nicht mit einem automatisch hochzählenden Schlüssel auszustatten - na ja, 'grob fahrlässig'. Und gelöschte IDs wiederzuverwenden setzt auch irgendeinen gesonderten Eingriff voraus, auch das ist für mich bei so einer Datenstruktur nicht nachvollziehbar.
Verfasst: 24.05.2006, 23:29
von marky
Hallo,
danke für die Tipps, die Abfrage bedeutet aber auch, dass jede IP nur einmal gezählt wird.
Ich, der mit einer festen IP ins Netz geht, würde bei den Stats nur ein einzigstes Mal gewertet, immer mit dem letzten "Auftritt".
Gibt es da nichts genaueres ohne gleich eine Ein-Eindeutige-Session per Cookie zu verwenden, was ich eigentlich nicht möchte.
Verfasst: 25.05.2006, 01:31
von net(t)worker
kannst das gane ja tageweise auswerten, am besten immer so um 4 Uhr rum den Übergang von einem tag zum anderen vollziehen in der Auswertung.... da dürfte am wenigsten los sein...
wenn du es richtig genau haben willst musste wirklich mit eindeutigen sessions arbeiten...
wenn du aber nur die einstiegs und ausstiegsseite haben möchtest, also den weg dazwischen garnicht auswerten möchtest, machste pro "session" einen db eintrag, dort speicherste die erste Seite, die zuletzt besuchte und den zeitpunkt des letzten besuches... bei jedem seiten aufruf machste ein update
update urls set lasturl='".$url."', zeit=$jetzt where ip='".$ip."' and zeit > ($jetzt - $sessiondauer)
$jetzt wäre in diesem Fall ein unix timestamp, also int, da lässt sich am besten mit rechnen..
dann musste nur noch überprüfen ob ein Datensatz verändert wurde, falls nicht musste einen neuen Datensatz für ne session anlegen...
und so haste denn für jede session einen Datensatz mit einstiegs- und ausstiegsseite....
Verfasst: 25.05.2006, 09:49
von marky
Hallo,
danke - genau so kompliziert wollte ist das nicht machen, vorallem steigt die DB-Menge durch die Session massiv an und die SQL-Abfragen dauern jetzt schon ewig, weil vieles nicht wirklich indexiert abläuft. Muss ich mal sehen, wie ich da weiter vorgehe, ich will ja nicht bei jedem Klick die Datenbank abschiessen, wenn da mal ein paar Millionen Einträge drin sind - da mysql leider nicht wirklich stark.