The Sidewinder
23-11-2005, 12:01
Hi zusammen,
ich mach gerade ne kleine Besucher-Analyse für ne Homepage.
Tabelle sieht wie folgt aus:
ID, Datum des Besuchs, IP-Adresse, Hostname
Ich mach momentan folgenden SELECT auf diese Tabelle:
mysql_query("SELECT * FROM tabelle GROUP BY besucher_ip");
Er gibt mir also eine Liste zurück, welche jede IP nur einmal auflistet (GROUP BY). Dabei nimmt er jeweils den ersten Eintrg den erzu der IP findet, somit hätte ich auch das Datum des ersten Besuchs.
Nun hätte ich noch gerne das Datum des letzten Besuchs und die Anzahl der Besuche einer IP.
Wie macht man das am Besten?
The Sidewinder
23-11-2005, 12:08
Das ist schon klar.
Aber wie mach ich das nun genau?
Zum Beispiel Count. Ich will das ja von ALLEN ips wissen.
Wenn ich jetzt COUNT(255.255.255.255) mach, dann gibt er mir z.B. 5 zurück. Soll ich jetzt ne While-Schleife machen mit php und dann jede IP nochmals mittels COUNT aus der Datenbank abfragen oder kann man das auch anders über die Datenbank selbst lösen?
Also die eigentliche Frage ist, kann man sowas elegant über die Datenbank lösen oder muss ich das mit unzähligen einzel-Abfragen mit PHP machen?
mrhappiness
23-11-2005, 12:09
COUNT(spaltenname)
So wie's in der Doku steht...
The Sidewinder
23-11-2005, 12:22
Also ich glaube wir reden aneinander vorbei.
Ich wollte wissen, ob sich das COUNT oder MIN, MAX auch auf GROUP BY bezieht.
SELECT artikel, MAX(preis) AS preis
FROM shop
GROUP BY artikel
+---------+-------+
| artikel | preis |
+---------+-------+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
Anscheind ja...
Also wenn ich ...
SELECT besucher_id, besucher_date, besucher_ip, besucher_host, COUNT(besucher_ip) AS besucher_anz, MAX(besucher_date) AS besucher_date_max
FROM tabelle
GROUP BY besucher_ip
... mach, dann macht er mir nur den COUNT und MAX von dem jeweiligen GROUP BY?
Bsp.:
01 1111111111 123.123.123.123 t-online.proxy.wieauchimmer1
02 1111111121 123.123.123.123 t-online.proxy.wieauchimmer1
03 1111111131 123.123.123.123 t-online.proxy.wieauchimmer1
04 1111111141 123.123.123.123 t-online.proxy.wieauchimmer1
05 1111111151 123.123.123.123 t-online.proxy.wieauchimmer1
06 1111111161 123.123.123.123 t-online.proxy.wieauchimmer1
07 1111193211 123.123.123.100 t-online.proxy.wieauchimmer2
08 1111121231 123.123.123.100 t-online.proxy.wieauchimmer2
09 1111221121 123.123.123.100 t-online.proxy.wieauchimmer2
10 1111223231 123.123.123.100 t-online.proxy.wieauchimmer2
Dann hätte ich folgendes Ergebnis
01 1111111111 123.123.123.123 t-online.proxy.wieauchimmer1 6 1111111161
07 1111193211 123.123.123.100 t-online.proxy.wieauchimmer2 4 1111223231
mrhappiness
23-11-2005, 12:24
Entweder ausprobieren oder Doku lesen.
Sollte beides schneller gehen, als hier zu fragen, meinst du nicht?