Johnny B.: suche Query, der eine bestimmte Datenanordnung liefert

Beitrag lesen

Hallo geehrtes Forum,

ich habe eine Tabelle folgenden Formats:

id | datum      | typ | typ_id
----+------------+-----+--------
 21 | 2010-03-10 |  G  | 12
 22 | 2010-03-12 |  M  | 22

Jetzt suche ich einen mySQL-Query, mit dem ich die Anzahl der Einträge eines Typs gruppiert nach Monaten von einer typ_id bekomme. Das geht z.B. so:

SELECT  DATE_FORMAT( datum, '%m.%Y'),  
        COUNT(*),  
        typ  
FROM statistik  
WHERE typ_id = '$typ_id'  
GROUP BY YEAR( datum ), MONTH( datum ), typ ORDER BY datum  

Das Ergebnis sieht so aus:

datum  | anzahl | typ
--------+--------+-----
01.2010 | 1      | G
02.2010 | 1      | M
02.2010 | 1      | G
03.2010 | 1      | M
03.2010 | 13     | G

Das sind prinzipiell auch genau die Daten, die ich mit der Abfrage bekommen wollte. Ich erstelle die Tabelle mit dem Perl-Modul Data::Table. Das ist deswegen cool, weil ich dem Modul einfach ein Query übergebe und die Tabelle fertig zurückbekomme. Meine Herausforderung ist nun, ein Query zu formulieren, welches die Daten in folgender Form erzeugt:

datum  | G  | M | F | L | usw...
--------+----+----
01.2010 | 1  | 0
02.2010 | 1  | 1
03.2010 | 13 | 1

Ich kann natürlich in Perl etwas programmieren, was diese Anordnung mit mehreren Querys erzeugt. Bisher habe ich mySQL immer nur als bessere Wahl gegenüber Speicherung reiner .csv-Textdateien gesehen und benutzt. Aber u.a. durch Vinzenz Mai's Monster-Query hier hab ich jetzt Blut geleckt, mich in mySQL zu vertiefen. Was es da nicht alles gibt: JOINs, UNIONs, SUBSELECTs, sogar selfJOINs! ;-) Irgendwas von denen wird mir bestimmt auch hier helfen?! Kann mir jemand einen Tipp geben?

Besten Gruß
JOhnnY