# [MySQL] Verschachtelte SELECT-Abfrage mit COUNT ...



## Quests Sohn (12. August 2014)

Hallo zusammen,

ich habe irgendwie Probleme mit einer vermutlich gar nicht so schweren Abfrage.
Ziel ist es, die Zeilen einer Tabelle "anfragen" auszugeben, denen jeweils nicht mehr als vier Zeilen der Tabelle "angebote" zugeordnet sind. Also:

Tabelle "*anfragen*": _anfrage_id, anfrage_name, anfrage_datum, anfrage_text_
Tabelle "*angebote*": _angebot_id, anfrage_id, angebot_datum, angebot_text_

Mein Ansatz steckt in diesem Stadium fest:


```
SELECT anfrage_id, anfrage_datum FROM anfragen a INNER JOIN angebote b ON a.anfrage_id = b.anfrage_id WHERE (SELECT COUNT(*) FROM b.angebote WHERE b.anfrage_id = a.anfrage_id) <= 4
```

Ich bin für jeden Tipp dankbar.
Als *Zusatzfrage* hätte ich dann noch, ob die hoffentlich zu findende Lösung auch für die INSERT Query eingesetzt werden kann, also wenn bei Eintragen eines Angebots geprüft wird, dass nicht bereits mehr als vier Angebote vorhanden sind.

Danke schon mal!


----------



## Biber3 (12. August 2014)

Moin Questson,

eine mögliche (aber ungetestete) Variante wäre

```
SELECT a.anfrage_id, a.anfrage_datum, b.Anzahl
FROM anfragen a,
  (SELECT Anfrage_id,  COUNT(*) as Anzahl
  FROM angebote
  GROUP BY Anfrage_id
  Having Count(*) <=4
  ) b

  WHERE b.anfrage_id = a.anfrage_id
;
```

Für das  Insert -Statement passt es so nicht, da du ja bei einem INSERT keine WHERE -Clause zur Verfügung hast..

Grüße
Biber


----------

