我有查询提供了错误的结果,我在这个查询中做错了吗
SELECT b.nBoutiqueID ,
b.sBoutiqueName ,
b.Status ,
SUM(bs.nViewCount) nViewCount ,
SUM(ps.nViewCount) nProductViewCount,
SUM(ps.nLinkClickCount) nLinkClickCount ,
SUM(ps.nWishListCount) nWishListCount ,
SUM(ps.nReferredCount) nReferredCount
FROM boutique b
LEFT JOIN boutique_stats bs
ON b.nBoutiqueID=bs.nBoutiqueID
LEFT JOIN product_stats ps
ON ps.nBoutiqueID=b.nBoutiqueID
WHERE b.bDeleted =0
GROUP BY b.nBoutiqueID
ORDER BY ps.nProductID DESC
查询不给出任何错误,但产生错误的结果。我正在使用Mysql。
对于nBoutiqueID = 1的特定实例,nViewCount的最大总和应为455,但它给出了95124.这是巨大的差异。谁知道为什么?
答案 0 :(得分:5)
看来你正在获得查询的一种笛卡尔积...尝试从子查询中获取SUM()值......
SELECT
b.nBoutiqueID,
b.sBoutiqueName,
b.Status,
bs.StatsViewCount,
ps.ProductViewCount,
ps.ProductLinkClickCount,
ps.ProductWishListCount,
ps.ProductReferredCount
FROM
boutique b
LEFT JOIN ( select nBoutiqueID, sum( nViewCount ) as StatsViewCount
from boutique_stats
group by nBoutiqueID ) bs
ON b.nBoutiqueID = bs.nBoutiqueID
LEFT JOIN ( select SUM(nViewCount) ProductViewCount,
SUM(nLinkClickCount) ProductLinkClickCount,
SUM(nWishListCount) ProductWishListCount,
SUM(nReferredCount) ProductReferredCount
from product_stats
group by nBoutiqueID ) ps
ON ps.nBoutiqueID=b.nBoutiqueID
WHERE
b.bDeleted = 0
ORDER BY
ps.nProductID DESC
答案 1 :(得分:1)
你说“max nViewCount应该是455,但它给出95124”。
但在您的查询中,您有SUM(bs.nViewCount) nViewCount,
。
不应该是MAX(bs.nViewCount) nViewCount,
?