Mysql
 sql >> Base de données >  >> RDS >> Mysql

Joindre à gauche, additionner et compter le groupe par

Votre problème est que lorsque vous avez deux (ou plus) store rangées et deux (ou plus) pics lignes pour un seul goods ligne, vous vous retrouvez avec le produit de toutes les combinaisons de lignes.

Pour résoudre ce problème, faites votre agrégation avant de rejoindre :

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)