# MySQL - WHERE-Bedingung bei Abfrage mit GROUP BY



## Hartkern (16. März 2011)

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:*





*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


----------



## Yaslaw (17. März 2011)

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


```
SELECT x
FROM myTable
WHERE y=1
GROUP BY x
HAVING COUNT(z) > 1
```


----------



## Hartkern (18. März 2011)

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")  

Hier ein Screenshot des aktuellen Ergebnisses:
http://www.heinzen.biz/temp_bis_2012_0002.jpg​
Danke!
Marcus


----------



## Yaslaw (18. März 2011)

Einfach ein SELECT Rundherum

```
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


----------

