MySQL Abfrage kombinieren
mixmastertobsi
- datenbank
0 ChrisB
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?
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
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.
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
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