Mark: Mysql - Übereinstimmungen finden und zählen

Hallo Ihrs,

Ich vesuche es mal auf den Punkt zu bringen...

-----------
| spalte  |
-----------
|   1     |
-----------
|   2     |
-----------
|   1     |
-----------
|   3     |
-----------
|   2     |
-----------
|   1     |
-----------

Die 1 kommt also dreimal, die 2 zweimal und die 3 kommt einmal vor.
Wie komme ich mit "einer" Abfrage an die Anzahl der Treffer? Als Wert kommen immer nur 1,2 oder 3 in Frage.

Gruss und danke, Mark

  1. Hi

    SELECT spalte, Count(spalte) Treffer
    FROM tabelle
    GROUPY BY spalte

    -> du solltest dich in Zukunft doch mal mit dem Thema Aggregats- und Gruppierungsfunktionen unter ANSI SQL '92 auseinandersetzen. Dazu gibt es reichlich Bücher.

    Viele Grüße,
    Frank

    1. SELECT spalte, Count(spalte) Treffer
      FROM tabelle
      GROUPY BY spalte

      Hallo Frank,

      danke erstmal!

      der GROUPY war gut, damit muss man erst einmal rechnen *g*

      So weit war ich schon, die Abfrage liefert mir aber nur die Anzahl derer mit dem Wert 1, nicht jedoch die mit 2 und 3

      Gruss, Mark

      1. Hallo,

        So weit war ich schon, die Abfrage liefert mir aber nur die Anzahl derer mit dem Wert 1, nicht jedoch die mit 2 und 3

        Mit den genannten Daten sollte diese Abfrage

        mysql> SELECT feld,COUNT(feld) FROM tabelle GROUP BY feld;

        zu diesem Ergebnis

        +------+-------------+
        | feld | COUNT(feld) |
        +------+-------------+
        |    1 |           3 |
        |    2 |           2 |
        |    3 |           1 |
        +------+-------------+

        fuehren.

        MfG, Thomas

        1. Hallo,

          $mysql="SELECT feld,COUNT(feld) Treffer FROM tabelle GROUP BY feld";
          $result=mysql_query($mysql, $con);
          $ergebnis=mysql_fetch_array($result)

          foreach($ergebnis as $key => $value)
          {
          echo $key . ":" . $value;
          }

          dann bekomme ich nur:

          0:1
          feld:1
          1:129
          Treffer:129

          Da fehlen mir also noch die Ergebnisse von 2 und 3.

          Gruss

          1. Hallo,

            $result=mysql_query($mysql, $con);
            $ergebnis=mysql_fetch_array($result)

            foreach($ergebnis as $key => $value)
            {
            echo $key . ":" . $value;
            }

            dann bekomme ich nur:

            0:1
            feld:1
            1:129
            Treffer:129

            Da fehlen mir also noch die Ergebnisse von 2 und 3.

            Du fragst auch nur einen Datensatz ab. Lege mal eine while-Schleife um den foreach-Ausdruck.

            Ich erhalte mit

            while($zeile=mysql_fetch_array($result))
            {
              print $zeile["feld"]." : ".$zeile["Treffer"]."<br>\n";
            }

            die Ausgabe

            1 : 3
            2 : 2
            3 : 1

            MfG, Thomas

            1. Hallo Thomas,

              vielen Dank, die Whileschleife war also mein Problem. Habe an der falschen Stelle nach dem Fehler gesucht.

              Es funktioniert jetzt einwandfrei..., danke nochmal :)

              Gruss, Mark