Einzelne mysql Werte ausgeben und zählen
Andreas
- php
Hi,
Ich habe ein Problem das ich nicht lösen kann. Ich habe eine mysql Datenbank, welche ich gerne auswerten würde. Die Datenbank speichert IP Adressen ( Counter ).
Wenn ich den Befehl
$abfrage0 = "SELECT ip FROM counter";
$ergebnis0 = mysql_query($abfrage0);
$menge0 = mysql_num_rows($ergebnis0);
verwende, werden alle Einträge der Tabelle gezählt. Da viele Einträge auch mehrfach abgespeichert sind, wäre es super, wenn jeder Eintrag der Mehrfach vorhanden ist, nur einmal gezählt wird. Beispielsweise würde eine IP die 5x vorkommt nur einmal gezählt.
Leider bringe ich das nicht hin.
Danke, Cheers Andreas
Hi,
$abfrage0 = "SELECT ip FROM counter";
$ergebnis0 = mysql_query($abfrage0);
$menge0 = mysql_num_rows($ergebnis0);verwende, werden alle Einträge der Tabelle gezählt. Da viele Einträge auch mehrfach abgespeichert sind, wäre es super, wenn jeder Eintrag der Mehrfach vorhanden ist, nur einmal gezählt wird. Beispielsweise würde eine IP die 5x vorkommt nur einmal gezählt.
Versuchs mal mit
SELECT DISTINCT(ip) FROM counter
oder
SELECT ip FROM counter GROUP BY ip
Sollte eigentlich beides klappen. Wo der Unterschied liegt kann ich dir leider nicht sagen.
mfG,
steckl
Na, das klappt super! Genau das habe ich gesucht.
Dank für die schnelle Hilfe. Schönes Wochenende
Eine kleine weitere Frage habe ich gerade noch, wenn wie schon dfabei sind :-)
Ihr merkt, ich arbeite an einer Counter-Statistik.
Nun würde ich gerne alle Einträge zählen, die ein bestimmtes Wort beinhalten.
Beispiel,
Windows
Unix
Windows Xp
Mac OS
Windows
Welcher Befehl kann ich verwenden, um die Anzahl des Wortes Windows zu zählen?
Danke nochmals,
Hallo Andreas,
Nun würde ich gerne alle Einträge zählen, die ein bestimmtes Wort beinhalten.
Beispiel,
Windows
Unix
Windows Xp
Mac OS
WindowsWelcher Befehl kann ich verwenden, um die Anzahl des Wortes Windows zu zählen?
Wie ich Dir bereits schrieb, kannst Du zum Zählen die Funktion COUNT benutzen.
Die WHERE-Klausel hilft Dir, nur die Datensätze zu finden, an denen Du interessiert bist:
SELECT
COUNT(*) AS Anzahl
FROM tabelle
WHERE inhalt LIKE '%Windows%'
Bitte beachte, dass sich bei solchen Einschränkungen kein Index nutzen läßt,
so dass es stets zur Durchsicht der gesamten Tabelle kommt.
Es ist keine gute Idee, sich Datensätze zurückgeben zu lassen, wenn Du nur an
der Anzahl der Datensätze interessiert bist.
Freundliche Grüße
Vinzenz
Hallo Stefan,
SELECT DISTINCT(ip) FROM counter
oder
SELECT ip FROM counter GROUP BY ip
Sollte eigentlich beides klappen. Wo der Unterschied liegt kann ich dir leider nicht sagen.
beides ist keine gute Idee, auch wenn der OP begeistert ist.
Es ist völlig überflüssig, das DBMS jede Menge Daten zurückliefern zu lassen,
wenn man nur an einer einzigen Zahl interessiert ist.
Mein Lösungsvorschlag ist deswegen besser.
Freundliche Grüße
Vinzenz
Hi,
Es ist völlig überflüssig, das DBMS jede Menge Daten zurückliefern zu lassen,
wenn man nur an einer einzigen Zahl interessiert ist.Mein Lösungsvorschlag ist deswegen besser.
Stimmt, soweit ich das beurteilen kann hast du recht, wenn er nur die Anzahl der Einträge benötigt und nicht deren Werte.
mfG,
steckl
Hallo
Ich habe ein Problem das ich nicht lösen kann. Ich habe eine mysql Datenbank, welche ich gerne auswerten würde. Die Datenbank speichert IP Adressen ( Counter ).
Da viele Einträge auch mehrfach abgespeichert sind, wäre es super, wenn jeder Eintrag der Mehrfach vorhanden ist, nur einmal gezählt wird. Beispielsweise würde eine IP die 5x vorkommt nur einmal gezählt.
Leider bringe ich das nicht hin.
SELECT
[link:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_count-distinct@title=COUNT(DISTINCT] ip)
FROM counter
liefert Dir zurück, wieviele unterschiedliche IP-Adressen in Deiner Counter-Tabelle
stehen.
Freundliche Grüße
Vinzenz
Hi,
Hallo,
Da viele Einträge auch mehrfach abgespeichert sind, wäre es super, wenn jeder Eintrag der Mehrfach vorhanden ist, nur einmal gezählt wird. Beispielsweise würde eine IP die 5x vorkommt nur einmal gezählt.
steht schon ein paar mal im Archiv. Einfach mal mit "doppelte Einträge" als Stichwort suchen.
Danke, Cheers Andreas
Gruß
Carl