Mysql] Count aus Select in Where verwenden

OK, das hab ich jetzt soweit. Wenn ich dich/euch richtig verstanden habe, kann ich jetzt aber nicht einfach hingehen und diese Query um ein WHERE erweitern, das mir beispw. alle Searchlists gibt, die keine Relation zu einem Seller/Buyer haben oder?
 
JA :

SQL:
SELECT s.id, s.weiterefelder, count(b.searchlists_id), count(ss.searchlists_id)
 FROM searchlist s
 LEFT JOIN search buyer_searchlists b ON bs.searchlists_id = s.id
 LEFT JOIN seller_searchlists ss  ON  ss.searchlists_id = s.id
GROUP BY s.id, s.weiterefelder
HAVING COUNT(b.searchlists_id) = 0

Nochmals, wenn der Count nicht mit in die Selektion muss, nimm EXISTS.
 
Zuletzt bearbeitet von einem Moderator:
Hallo !

vielen Dank - ich habe das jetzt mal so eingebaut und Testdaten eingefügt: Es gibt zwei Einträge in der "searchlists" mit jeweils drei Einträgen in der "seller_searchlists" bzw. "buyer_searchlists".
Ohne das "HAVING" liefert er mir für jeden Eintrag in der "searchlists" aber jeweils neun Einträge in den beiden anderen zurück, was mir schwer nach Kreuzprodukt aussieht.
Das angepasste SQL sieht nun wie folgt aus:
Code:
SELECT s.id, count(bs.searchlists_id), count(ss.searchlists_id)
 FROM searchlists s
 LEFT JOIN buyer_searchlists bs ON bs.searchlists_id = s.id
 LEFT JOIN seller_searchlists ss  ON ss.searchlists_id = s.id
GROUP BY s.id
 
Ok, ich habs nun selbst hingefummelt:
Code:
SELECT s.id, count(bs.searchlists_id) as buyercount, ss.sellercount
 FROM searchlists s
 LEFT JOIN buyer_searchlists bs ON bs.searchlists_id = s.id
 INNER JOIN (
  SELECT s1.id, count(ss2.id) as sellercount FROM searchlists s1
  LEFT JOIN seller_searchlists ss2 ON ss2.searchlists_id = s1.id
  GROUP BY s1.id
 ) AS ss ON ss.id = s.id 
GROUP BY s.id

Anders scheint es mir nicht zu gehen.
 
Zurück