Andreas: Einzelne mysql Werte ausgeben und zählen

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

  1. 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

    1. Na, das klappt super! Genau das habe ich gesucht.

      Dank für die schnelle Hilfe. Schönes Wochenende

      1. 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,

        1. Hallo Andreas,

          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?

          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

    2. 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

      1. 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

  2. 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

  3. 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