Hallo
!
Ich bin neu hier – habt also bitte Geduld mit mir
.
Ich konnte leider (vielleicht weil ich den richtigen Begriff nicht kenne) keine passende Antwort auf meine Frage finden und bin mir auch nicht ganz sicher, ob das überhaupt möglich ist, aber wenn es ginge wäre es ein riesen Performance-Helfer für mich:
Ich hab ein kleines Analyse-Tool gebaut, mit dem ich Zugriffszahlen analysieren möchte.
Es geht um eine MySQL 5.5-DB.
In der Tabelle "visitor_views" sind Aufrufe der Website mit dem Zeitpunkt "visit_time" (als UNIX-Timestamp, int(11)) gespeichert sowie "visitor_ids" und "page_ids" hinterlegt. Die "page_ids" sind Seiten des Webauftritts, Visitor_ids ist der Primary Key einer anderen Tabelle "visitors" in der verschlüsselte IP-Adressen und Browser-Version des Besuchers abgespeichert wurden.
Nun würde ich gerne Aufrufe und Besuche von Unterseiten ermitteln. Dies funktioniert schon ganz gut.
Nur die Besuche müsste ich eben ermitteln, und zwar so, dass ein Besuch dann gewertet wird, wenn der Besucher nach 30 Minuten oder mehr wieder auf der Seite erscheint.
Dafür habe ich mir gedacht, ich müsste die Tabelle "visitor_views" eigentlich nur nach der "visit_time" sortieren und dann schauen, ob die vorherige Zeile mit dem gleichen Benutzer mindestens 30 Minuten älteren Timestamp abgespeichert hat. Ist dies der Fall, wird dies als ein Besucht gezählt, sonst nicht. Aber wie komme ich denn an die nächste oder vorherige Zeile dran?
Hier mein Ansatz:
Bei [nextRow] müsste ich eben den Wert der nächsten Zeile für visit_time herausfinden... (oder man drehts um und guckt einfach nach der vorherigen Zeile, weil die MySQL ja schon kennt?) Gibt es da eine Möglichkeit und könnte mir jemand einen Tipp dazu geben?
Vielen Lieben Dank im Voraus für Eure Hilfe
*Fuchur*

Ich bin neu hier – habt also bitte Geduld mit mir

Ich konnte leider (vielleicht weil ich den richtigen Begriff nicht kenne) keine passende Antwort auf meine Frage finden und bin mir auch nicht ganz sicher, ob das überhaupt möglich ist, aber wenn es ginge wäre es ein riesen Performance-Helfer für mich:
Ich hab ein kleines Analyse-Tool gebaut, mit dem ich Zugriffszahlen analysieren möchte.
Es geht um eine MySQL 5.5-DB.
In der Tabelle "visitor_views" sind Aufrufe der Website mit dem Zeitpunkt "visit_time" (als UNIX-Timestamp, int(11)) gespeichert sowie "visitor_ids" und "page_ids" hinterlegt. Die "page_ids" sind Seiten des Webauftritts, Visitor_ids ist der Primary Key einer anderen Tabelle "visitors" in der verschlüsselte IP-Adressen und Browser-Version des Besuchers abgespeichert wurden.
Nun würde ich gerne Aufrufe und Besuche von Unterseiten ermitteln. Dies funktioniert schon ganz gut.
Nur die Besuche müsste ich eben ermitteln, und zwar so, dass ein Besuch dann gewertet wird, wenn der Besucher nach 30 Minuten oder mehr wieder auf der Seite erscheint.
Dafür habe ich mir gedacht, ich müsste die Tabelle "visitor_views" eigentlich nur nach der "visit_time" sortieren und dann schauen, ob die vorherige Zeile mit dem gleichen Benutzer mindestens 30 Minuten älteren Timestamp abgespeichert hat. Ist dies der Fall, wird dies als ein Besucht gezählt, sonst nicht. Aber wie komme ich denn an die nächste oder vorherige Zeile dran?
Hier mein Ansatz:
Code:
SELECT
count(view_id) AS view_count,
count(vis_id WHEN (visit_time + (30 * 60)) <= [nextRow].visit_time) AS visit_count,
page_id
FROM
visitor_views
GROUP BY
page_id
ORDER BY
visit_time DESC
Bei [nextRow] müsste ich eben den Wert der nächsten Zeile für visit_time herausfinden... (oder man drehts um und guckt einfach nach der vorherigen Zeile, weil die MySQL ja schon kennt?) Gibt es da eine Möglichkeit und könnte mir jemand einen Tipp dazu geben?
Vielen Lieben Dank im Voraus für Eure Hilfe
*Fuchur*