mixmastertobsi: MySQL Abfrage kombinieren

Hallo, ich mal wieder;-)

Diemal möchte ich eine Abfrage kombinieren

Ich habe folgende Tabelle

artikel | marke | kategorie
---------------------------
artikel1| marke1| 10
artikel2| marke1| 20
artikel3| marke2| 20
artikel4| marke3| 10

Ich möchte nun alle verfügbaren Marken ausgeben und die Anzahl der gruppierten Artikel

SELECT marke, COUNT(artikel) FROM tbl1 GROUP BY marke

AUSGABE
marke | count
--------------
marke1| 2
marke2| 1
marke3| 1

Jetzt kommt mein Problem. Ich möchte die Abfrage noch mit einer WHERE-Klausel einschränken. Etwa so

SELECT marke, COUNT(artikel) FROM tbl1 WHERE kategorie = '10' GROUP BY marke

In meinem Beispiel wird nun die Tabelle wie folgt ausgegeben
marke | count
--------------
marke1| 1
marke3| 1

Ich möchte allerdings, dass weiterhin alle Marken ausgegeben werden. - auch marke2. Die Ausgabe sollte wie folgt aussehen

marke | count
--------------
marke1| 1
marke2| 0
marke3| 1

Ich habe bereits vieles probiert. Momentan löse ich es mit zwei verschiedenen Abfragen - allerdings finde ich das nicht als die ideale Lösung. Wer hat mir einen Tipp?

  1. Hi,

    Ich möchte allerdings, dass weiterhin alle Marken ausgegeben werden. - auch marke2. Die Ausgabe sollte wie folgt aussehen

    marke | count

    marke1| 1
    marke2| 0
    marke3| 1

    Ersetze die WHERE-Klausel durch ein IF, welches 1 oder 0 liefert, je nachdem ob die Kategorie gleich 10 ist oder nicht.
    Summiere diese Werte auf.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. OK - mein Beispiel war blöd. Eigentlich sind die WHERE-Klausel wie folgt aus

      WHERE kategorie LIKE '10%'

      Ich denke, da komme ich mit einer IF Abfrage nicht weiter. Des weiteren sind in der WHERE-Klausen und umständen noch mehr Abfragen.

      1. Hi,

        OK - mein Beispiel war blöd.

        Erwarte nicht, dass ich jetzt Überraschung fake ...

        Eigentlich sind die WHERE-Klausel wie folgt aus

        WHERE kategorie LIKE '10%'

        Ich denke, da komme ich mit einer IF Abfrage nicht weiter.

        Dann denk noch mal.

        IF erwartet als ersten „Parameter“ eine Expression.
        WHERE-Conditions sind ebenfalls Expressions.

        Des weiteren sind in der WHERE-Klausen und umständen noch mehr Abfragen.

        Wenn du es mit den erweiterten Hinweisen immer noch nicht selber hinbekommst, dann liefere wenigstens mal ein nicht-blödes Beispiel.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. OK - dann mal mit einem besseren Beispiel

          Folgende Abfrage hatte ich probiert. Leider lieferst Sie nicht das gewünschte Ergebnis

            
          SELECT IF(artikel_test.tester='w',COUNT(artikel.anr),0), artikel.marke  
          FROM artikel  
          LEFT JOIN artikel_test ON artikel.anr = artikel_test.anr  
          WHERE artikel.kategorie LIKE '10%' GROUP BY artikel.marke  
          
          

          TABELLE - artikel
          anr     | marke | kategorie
          ---------------------------
          artikel1| marke1| 1011
          artikel2| marke1| 1010
          artikel3| marke2| 1010
          artikel4| marke3| 1011

          TABELLE - artikel_test
          anr     | tester
          ----------------
          artikel1| w
          artikel2| t
          artikel3| t

          Eigentlich sollte die Ausgabe wie folgt aussehen.
          count | marke
          --------------
          1     | marke1
          0     | marke2
          0     | marke3

          Die Ausgabe sieht aber wie folgt aus
          count | marke
          --------------
          0     | marke1
          0     | marke2
          0     | marke3