MySQL - WHERE-Bedingung bei Abfrage mit GROUP BY

Hartkern

Grünschnabel
Servus und Hallo,

ich stehe vor einem anscheinend einfachen Problem, das ich leider nicht lösen kann.


Folgende Abfrage wird gesucht:
"Wie viel Bestellungen bestehen aus mehr als 5 Artikel (>5)"


Bisher bekomme ich folgendes hin:
SELECT `BestellNr`,count(`BestellNr`)
FROM `bestelldetails`
GROUP BY `BestellNr`
ORDER BY count(`BestellNr`) DESC​

So sieht das Ergebnis aus:
temp_bis_2012_0001.jpg


Was noch fehlt und mir nicht gelingt:
Es sollen nur die Bestellnummern ausgegeben werden, die >5 Artikel umfassen :(


Was dann noch fehlt aber nicht so schwer sein sollte:
Statt Ausgabe der Bestellnummern mit Anzahl der Artikel sollen mit COUNT die Anzahl der Bestellungen gezählt werden.​


Über sachdienliche Hinweise würde ich mich sehr freuen!
Danke
Marcus
 
Zuletzt bearbeitet:
HAVING ist das was du suchst.

Where filtert die Datensätze vor dem GROUP BY, HAVING nach dem GROUP BY. Diese beiden können aber auch kombiniert werden

SQL:
SELECT x
FROM myTable
WHERE y=1
GROUP BY x
HAVING COUNT(z) > 1
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank an "yaslaw", das mit dem HAVING kannte ich noch nicht. :)

Meine Abfrage sieht jetzt wie folgt aus:
SELECT count(`BestellNr`)
FROM `bestelldetails`
GROUP BY `BestellNr`
HAVING count(`BestellNr`) > 5​

Das Ergebnis zeigt jetzt nur noch die vier Bestellungen mit mehr als
5 Artikeln. :) Hmmmm, aber wie bringe ich ihn nun dazu die Anzahl der
gefunden Einträge anzuzeigen? (in diesem Fall "4") :eek:

Hier ein Screenshot des aktuellen Ergebnisses:

Danke!
Marcus
 
Einfach ein SELECT Rundherum
SQL:
SELECT COUNT(*) AS cnt
FROM (
    SELECT count(`BestellNr`)
    FROM `bestelldetails`
    GROUP BY `BestellNr`
    HAVING count(`BestellNr`) > 5 ) AS data

Also hast du den folgenden Ablauf
Gruppieren -> Zählen -> Prüfen auf 'Mehr als 5' -> Resultate nochmals zu einem Record Gruppieren -> Nochmals Zählen

PS: Bitte dein SQL-Code in Zukunft in [code=sql]...[/code] setzen
 
Zuletzt bearbeitet von einem Moderator:
Zurück