Vấn đề của bạn là khi bạn có hai (hoặc nhiều) store
hàng và hai (hoặc nhiều hơn) pics
hàng cho một goods
hàng, bạn sẽ có sản phẩm của tất cả các kết hợp các hàng.
Để khắc phục điều này, hãy tổng hợp lại trước khi tham gia:
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)