Bernd: Abfrage nach Datum und mit WHERE-Clause

Hallo!

Ich habe eine mySQL-DB, die so ist:

DATUM  | VON | AN
--------------------
 01.12.  | 230 | 400
 01.12.  | 111 | 333
 02.12.  | 435 | 400
 02.12.  | 287 | 400
 02.12.  | 972 | 345
usw...

Ich möchte nun ein Abfrage starten, die mir für jedes DATUM  alle Treffer (als SUMME) ausgibt, wo im AN-Feld '400' steht.

Im Beispiel müsste die Ausgabe also so sein:

DATUM  | SUMME
------------------
 01.12.  |   1
 02.12.  |   2

Mein Problem: ich bin nicht geübr in SQL und habe leider nicht die geringste Ahnung, wie ich das  realisieren könnte. Geht das überhaupt??

Danke, Bernd

  1. yo,

    select datum, count(*) AS Summe
    FROM tabllen_name
    WHERE an = '400'
    GROUP BY datum

    Ilja

    1. Hey, das ging flott!! Und tatsächlich, es funktioniert!

      Das "Group By" macht, dass das Datum kommuliert wird, oder? Ich hatte es mit "Distinct" versucht, bn aber nicht weitergekommen.

      1. yo,

        Das "Group By" macht, dass das Datum kommuliert wird, oder?

        nicht ganz, die group by klausel sorgt dafür, dass gleiche werte in der spalte datum, als eine gruppe behandelt werden, deswegen auch der treffende name "gruppiere nach".

        der count zählt dann jede gruppe für sich betrachtet nach seiner anzahl an mitglieder der jeweiligen gruppe. beides zusammen macht also die magie aus, der group by und dann die aggregat-funktion (gruppen-funktion) count()

        Ich hatte es mit "Distinct" versucht, bn aber nicht weitergekommen.

        DISTINCT filtert nur datensätze, die in jeder spalten identisch sind, kann aber keine gruppen bilden.

        Ilja

        1. Aaaaahhhhh! Danke nochmal!

  2. Hi,

    Ich möchte nun ein Abfrage starten, die mir für jedes DATUM  alle Treffer (als SUMME) ausgibt, wo im AN-Feld '400' steht.

    wie man das direkt in mysql macht, weiß ich nicht. Aber du könntest dir alle Treffer ausgeben lassen und diese dann mit PHP zählen. Anschließend würdest du nur die Summe ausgeben.
    Bsp.:
    SELECT AN WHERE AN = '400' AND DATUM = '01.12.'

    Dies sortiert dir dann ja alle AN 400er Felder für das Datum 01.12.heraus.
    Jetzt kannst du per PHP prüfen wie viele es sind. Dies geht so:
    $result = mysql_query($sql);
    $zeilen = mysql_num_rows($result);

    Anschließend kannst du dann einfach $zeilen ausgeben und du hast die Anzahl wie oft AN0400 bei einem bestimmten Datum vorkommt
    tschau brockerdocker

    1. Hi auch!

      Wirst lachen (oder auch nicht), aber das dachte ich mir in meiner "Verzweiflung" auch schon :-)