Mysql
 sql >> Database >  >> RDS >> Mysql

A sinistra unisciti, somma e conta raggruppa per

Il tuo problema è che quando hai due (o più) store righe e due (o più) pics righe per una singola goods riga, si ottiene il prodotto di tutte le combinazioni di righe.

Per risolvere questo problema, fai la tua aggregazione prima di unirti:

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)