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

Quests Sohn

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

SQL:
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!
 
Moin Questson,

eine mögliche (aber ungetestete) Variante wäre
SQL:
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
 
Zurück