Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Links verbinden, summieren und gruppieren nach

Ihr Problem ist, dass Sie zwei (oder mehr) store haben Zeilen und zwei (oder mehr) pics Zeilen für eine einzelne goods Zeile erhalten Sie das Produkt aller Kombinationen von Zeilen.

Um dies zu beheben, führen Sie Ihre Aggregation durch, bevor Sie beitreten:

SELECT 
  good.id, 
  good.title, 
  IFNULL(s.storerest, 0) AS storerest, 
  IFNULL(p.picscount, 0) AS picscount
FROM goods 
LEFT JOIN (
  SELECT goodid, sum(rest) AS storerest
  FROM store
  GROUP BY goodid
) s ON (goods.id = s.goodid) 
LEFT JOIN (
  SELECT goodid, count(id) AS picscount
  FROM pics
  GROUP BY goodid
) p ON (goods.id = p.goodid)