MySQL: Count-Anfrage über eine Tabelle -> "0" anzeigen

Marokaner

Mitglied
Hallo,

ich versuche mich seit Stunden an einer SQL-Anfrage die zur statistischen Auswertung benötigt wird. Die Tabellenstruktur ist fix und kann unter keinen Umständen verändert werden.

Es gibt eine Tabelle mit folgender Struktur:
timestamp | result_ID | (... weitere Felder sind nicht von Bedeutung)
==================
14-01-09 | 1
14-01-09 | 4
14-01-09 | 3
15-01-09 | 4
15-01-09 | 1
15-01-09 | 2
15-01-09 | 4

Was für statistische Zwecke benötigt wird, ist eine Abfrage die ausgibt an welchem Tag welche Ergebnisse wie oft erzielt wurden und wieviele Aufgaben überhaupt durcheführt wurden (= Summe der aktivitäten an einem Tag)

Die Ergebnistabelle soll also so aussehen:
Datum | Aktivitäten | erg1 | erg2 | erg3 | erg4 |
=====================================
14-01-09| 3 | 1 | 0 | 1 | 1 |
15-01-09| 4 | 1 | 1 | 0 | 2 |

Ich habe folgende Abfrage bisher:
Code:
SELECT r1.datum, erg1, erg2, erg3, erg4
FROM (

SELECT DATE_FORMAT( timestamp, '%d.%m.%Y' ) AS datum, count( result_ID ) AS erg1
FROM action WHERE result_ID = '1'
GROUP BY datum 
)r1, (

SELECT DATE_FORMAT( timestamp, '%d.%m.%Y' ) AS datum, count( result_ID ) AS erg2
FROM action  WHERE result_ID = '2'
GROUP BY datum
)r2, (

SELECT DATE_FORMAT( timestamp, '%d.%m.%Y' ) AS datum, count( result_ID ) AS erg3
FROM action WHERE result_ID = '3'
GROUP BY datum
)r3, (

SELECT DATE_FORMAT( timestamp, '%d.%m.%Y' ) AS datum, count( result_ID ) AS erg4
FROM action WHERE result_ID = '4'
GROUP BY datum
)r4
WHERE r1.datum = r2.datum
AND r1.datum = r3.datum
AND r1.datum = r4.datum
AND r2.datum = r3.datum
AND r2.datum = r4.datum
AND r3.datum = r4.datum

Ich habe momentan dabei noch zwei Probleme:
1.) wie realisiere ich, dass eine "0" angezeigt wird, wenn ein bestimmtes Ergebnis an einem Tag nicht eingetreten ist. Bisher wird nämlich leider gar nichts angezeigt. Wenn die Anfrage über zwei Tabellen ging, könnte man einen LEFT JOIN machen, aber so bin ich ratlos....
2.) wie realisiere ich die Summe?

Hoffe auf Unterstützung!


Gruß Marokaner
 
Zuletzt bearbeitet:
Hi,

Beispiel für 2 verschiedene result_IDs:

Code:
SELECT DATE(timestamp) AS datum, 
   COUNT(result_ID) AS Aktivitäten, 
   SUM(result_ID = 1) AS erg1, 
   SUM(result_ID = 2) AS erg2 
FROM action 
GROUP BY datum

LG
 
Zurück