Count auf verschiedene Werte

evtl passender im Datenbank-Brett, aber ich denke mal hier passt es auch…?

Also ich habe folgendes „Problem“:

Ich würde gerne ein count anwenden auf ein query und dabei dann ausgegeben haben wie oft in einer bestimmten Spalte eine 0 oder eine 1 oder eine 2 steht…

Nun fehlt mir irgendwie die herangehensweise…
Gruppiert ist schon auf ein Datumswert - d.h. ich bekomme im Moment die Summe der 0er, einser und zweier zusammen - nun möchte ich diese aber aufgeteilt haben - und wenn möglich nicht in unterschiedlichen Zeilen ausgegeben…

Aber irgendwie fällt mir nicht ein, wie ich das machen könnte…?

Habt ihr irgendwelche Ideen?

Danke
Munich

Hallo Munich,

ja, dies ist in der Tat eine Frage nach einem SQL Statement, die im DB Brett sicher besser aufgehoben wäre.

Außerdem wäre es hilfreich wenn du die Struktur deiner Tabelle und dein bisheriges SQL Statement hier posten würdest.

Prinzipiell würde ich das so oder so ähnlich formulieren:

SELECT DISTINCT Datum, SUBQRY0.AnzahlNullen, SUBQRY1.AnzahlEinsen
FROM TabellenName 
INNER JOIN (SELECT COUNT(SpaltenName) AS AnzahlNullen, Datum FROM TabellenName GROUP BY Datum WHERE Spaltenname=0) AS SUBQRY0 ON TabellenName.Datum = SUBQRY0.DATUM
INNER JOIN (SELECT COUNT(SpaltenName) AS AnzahlEinsen, Datum FROM TabellenName GROUP BY Datum WHERE Spaltenname=1) AS SUBQRY1 ON TabellenName.Datum = SUBQRY1.DATUM

Damit solltest du eine Ausgabe bekommen die in etwa so aussieht:

Datum | AnzahlNullen | AnzahlEinsen
-----------+---------------+---------------
01.05.06 | 5 | 12
01.06.06 | 7 | 8

Das SQL Statement muss ggf. noch etwas an das Datenbanksystem angepasst werden, da Unterabfragen je nach DB (Access/Oracle/MySQL) unterschiedlich formuliert werden.

Vielleicht bietet dir dies ja einen Ansatz zum weiterarbeiten.
Gruß,
SirC

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

oh my goodness…
ufff…

das sieht ja mal echt knifflig aus…

mein bisheriges statement:
$sql = „SELECT status, count(wann), floor(wann / (60*60*24)) as wann2 FROM nachrichten WHERE sender=’$userdata[id]’ group by wann2, status order by wann2 DESC“;

Meine Tabelle sieht etwa so aus:

timestamp | status | blabla
-----------+---------+---------------
123456897 | 1 | x
123456950 | 2 | y
123456990 | 2 | z
123457151 | 1 | a
...

mal sehen ob ich Dein Statement umformen kann aber mit inner join hab ich bisher noch nie gearbeitet -.-

Danke auf jeden Fall schon mal…

Grüße
Munich

also zwingend ist eine Lösung nimmer nötig - habs sehr komplex gelöst - das sql query hab ich nicht hinbekommen…

interessieren würds mich deswegen schon noch - aber ist eben nicht zwingend nötig…