Mysql, Problem mit Count() und Group By
Daniel Petratsch
- datenbank
0 Vinzenz
Hallo Leute!
Ich hab mal wieder ein kleines Problem, dass mich etwas beschäftigt. Und zwar möchte ich gerne aus einer Artikeldatenbank aus einer bestimmten Kategorie eine bestimmte Anzahl von Artikeln ausgeben (Blätterfunktion), zu jedem Artikel zusätzlich aber auch die Anzahl ALLER in dieser Kategorie vorkommenden Artikel mittels COUNT(). Also zb
artikel_nr, kategorie, Name
1,10,Apfel
2,10,Birnen
3,10,Pflaumen
4,10,Bananen
5,10,Kirschen
Also sage ich nun zb "Selektiere mir 3 Datensätze heraus, die in der Kategorie 10 vorkommen und gib mir zu jedem Datensatz die Anzahl ALLER Artikel, die diese Kategorie(10) besitzen aus"
nun sollte zb. so etwas herauskommen:
artikel_nr, anzahl_gesamt, Name
1,5,Apfel
2,5,Birnen
3,5,Pflaumen
Aber ich bekomme immer Probleme mit dem Group By, Gruppiere ich nach artikel_nr bekomme ich logischerweise bei COUNT() 1 heraus, es muss aber nach artikel_nr Gruppiert werden, da jeder Artikel eine Einheit sein muss und nicht zusammengefasst werden darf,.
Das SQL Statement ist etwas komplizierter, aber im Endeffekt ist es dasselbe wie der obige, vereinfachte Fall(die Werte sind natürlich anders):
------------------->
SELECT COUNT( a.kategorie ) , a.artikel_nr, a.ueberschrift, a.kurzbeschreibung, a.verkaufspreis, a.mwst_satz, a.aktionspreis, a.in_aktion, a.verkaufseinheit, a.gewicht, a.lieferzeit, b.vorschau, b.dateiname
FROM artikel AS a
LEFT JOIN artikelbilder AS b ON ( a.artikel_nr = b.artnr_intern )
INNER JOIN lieferantendaten AS c ON ( a.ordersatz = c.ordersatz )
WHERE (a.kategorie = 16)
AND ((b.vorschau = 1) || ( b.vorschau IS NULL ))
AND a.unsichtbar = 0
GROUP BY a.artikel_nr
ORDER BY a.ueberschrift ASC
LIMIT 3
------------------->
Ich hoffe Ihr könnt mir etwas helfen, ich wüsste selbst keinen Weg mehr, ausser natürlich 2 seperate Abfragen zu machen, aber gerade dies möchte ich -so es geht vermeiden.
freundliche Grüsse,
Daniel
Hallo Daniel,
Also sage ich nun zb "Selektiere mir 3 Datensätze heraus, die in der Kategorie 10 vorkommen und gib mir zu jedem Datensatz die Anzahl ALLER Artikel, die diese Kategorie(10) besitzen aus"
Ich hoffe Ihr könnt mir etwas helfen, ich wüsste selbst keinen Weg mehr, ausser natürlich 2 seperate Abfragen zu machen, aber gerade dies möchte ich -so es geht vermeiden.
Warum? Ich sehe keinen Grund dafür.
Du hast zwei verschiedene Fragen:
[1] Suche x Datensätze, die zur Kategorie y gehören.
[2] Gib mir die Anzahl aller Datensätze, die zur Kategorie y gehören.
Deswegen nimm zwei separate - nicht seperate :) - Abfragen.
Freundliche Grüsse,
Vinzenz