sanktusm
10-07-2010, 17:53
Ich habe folgende MYSQL Abfrage:
SELECT
count(*) as numberofvisitors
FROM
base
WHERE
base.time > '$current_period' AND
base.time < '$next_period'
GROUP BY
base.ip;
In base.ip gibt es ungefähr 190 Einträge mit zahlreichen unterschiedlichen IPs
nun möchte ich nur die Zählen, die nicht doppelt sind. Das habe ich mit GROUP BY versucht. Leider bekomme ich immer die Ausgabe "1". Was könnte ich da falsch machen? Die Zeitwerte stimmen, das habe ich geprüft
In base.ip gibt es ungefähr 190 Einträge mit zahlreichen unterschiedlichen IPs nun möchte ich nur die Zählen, die nicht doppelt sind. Das habe ich mit GROUP BY versucht.
Was soll das bewirken?
Damit bekämst du zu einer base.ip, die fünf mal in den Daten vorkommt, einen Datensatz, in dem COUNT den Wert 5 liefert.
Was hat das jetzt mit „nicht doppelt“ zu tun?
Leider bekomme ich immer die Ausgabe "1". Was könnte ich da falsch machen?
Da du nicht mal Beispieldaten zeigst - keine Ahnung.
sanktusm
10-07-2010, 18:13
ich will einfach zählen wie viele unterschiedliche ips es in dem Datensatz gibt. Ist das verständlich geworden?
ich will einfach zählen wie viele unterschiedliche ips es in dem Datensatz gibt.
Wenn du nur eine Spalte hast, die eine IP enthält - base.ip hattest du im Beispiel genannt - dann brauchst du nicht viel zählen, die Antwort lautet immer 1: Es gibt pro Datensatz genau eine Spalte mit einer IP, also auch genau einen Inhalt (der ggf. leer/NULL/sonstwas sein mag) - und damit genau eine „unterschiedliche IP pro Datensatz“.
Ist das verständlich geworden?
Nein.
Und du bist eigentlich lange genug hier dabei, dass du es inzwischen ein bisschen besser wissen solltest.
sanktusm
10-07-2010, 18:22
ich habe viele Einträge mit unterschiedlichen IPs als mehrere Zeilen. Es sollte nicht 1 rauskommen:
Es sollte nicht 1 rauskommen:
Schön für dich, aber weiter sind wir damit immer noch nicht.
Entweder lieferst du jetzt Beispieldaten und das mit diesen erwartete Ergebnis, so dass das ganze nachvollziehbar wird - oder nach der nächsten Antwort von dir, die wieder nichts neues bringt, wird getrasht.
Btw.: Beispieldaten zu umfangreicheren Aufgabestellungen sind immer schön in der Form eines CREATE TABLE- und zugehöriger INSERT-Statements. Damit kann man das nämlich gleich per Copy&Paste und Einfügen im phpMyAdmin testen.
sanktusm
10-07-2010, 18:41
id ip
1 123
2 123
3 234
4 234
5 345
6 123
Nehmen wir an es wird die Ip von Nutzern in diese Tabelle gesetzt.
die IP kommt manchmal zwei oder drei mal vor, weil der selbe besucher die Seite mehrmals besucht hat.
Nun sind es genau 3 unterschiedliche Besucher die es gilt zu zählen. Wie mach ich das?
sanktusm
10-07-2010, 18:52
$sqlvt = "SELECT
count(distinct ip) as numberofvisits
FROM
base
WHERE
base.time > '$current_period' AND
base.time < '$next_period';";
Bitte um kurze Rückmeldung ob, das so schlüssig ist
DonManfred
13-07-2010, 13:40
SELECT distinct(ip) as numberofvisitors
FROM base
WHERE base.time > '$current_period' AND base.time < '$next_period';
Hope it helps