Johnny B.: mySQL-Query mit einer Abfrage mehr - Subselect?

Beitrag lesen

Hallo geehrtes Forum,

folgende Abfrage funktioniert, wie ich es mir wünsche. Sie liefert alle Aktionen, die Beschreibung und die Anzahl der "Treffer" im gegebenen Zeitraum:

SELECT  aktion_id,                              -- hole aktion_id  
        (SELECT beschreibung                    -- und die dazugehörige Beschreibung  
            FROM aktionen  
            WHERE id = aktion_id  
        ),  
        COUNT( aktion_id )          anzahl      -- sowie die Anzahl  
FROM statistik  
WHERE $datumscheck                              -- im gegebenen Zeitraum  
AND typ = '1'                                   -- für einen bestimmten Typ  
GROUP BY aktion_id                              -- und zähle alle Vorkommen für eine Aktion zusammen  
ORDER BY anzahl DESC, aktion_id ASC             -- sortiert nach Anzahl die meisten und Aktion_id nach unten

Nun wollte ich zusätzlich noch eine weitere Abfrage einbauen. Es sollen neben typ = 1 noch die Anzahl der Treffer typ = 2 ausgegeben werden. Ich hätte erwartet, daß dies mittels eines zweiten Subselects funktionieren würde. Der liefert mir allerdings als anzahl2 die Anzahl _aller_ aktion_id's zusammen. Wieso?

SELECT  aktion_id,                              -- hole aktion_id  
        (SELECT beschreibung                    -- und die dazugehörige Beschreibung  
            FROM aktionen  
            WHERE id = aktion_id  
        ),  
        COUNT( aktion_id )          anzahl,      -- sowie die Anzahl  
        (SELECT COUNT(*)                         -- hole zusätzlich noch weiteren Typ  
            FROM statistik  
            WHERE aktion_id = aktion_id  
            AND typ = '2'  
        )                           anzahl2  
FROM statistik  
WHERE $datumscheck                              -- im gegebenen Zeitraum  
AND typ = '1'                                   -- für einen bestimmten Typ  
GROUP BY aktion_id                              -- und zähle alle Vorkommen für eine Aktion zusammen  
ORDER BY anzahl DESC, aktion_id ASC             -- sortiert nach Anzahl die meisten und Aktion_id nach unten

Das Ergebnis soll sein
eine Tabelle aller Aktionen nebst Beschreibung,
für die im gegebenen Zeitraum
entweder mindestens einmal typ = 1
oder mindestens einmal typ = 2 in der Tabelle statistik vorhanden ist
mit Angabe der Anzahl typ = 1 und
Anzahl typ = 2
das Ganze sortiert nach Häufigkeit Anzahl typ = '1'

Ich nehme an, daß ich den Query sowieso umbauen muß, denn so wie er dort oben steht erwischt er ja die Aktionen nicht, die zwar keinen typ = 1, aber einen typ = 2 haben. Doch vorher würde ich gerne verstehen, warum der Subselect oben nicht funktioniert...

Besten Gruß
JOhnnY