如何关联Product与OrderItems表按总销量降序查询畅销商品
解决畅销商品汇总排序问题
要实现按productId的总销量降序查询畅销商品,忽略size和color字段,你需要先对OrderItems表按productId分组汇总销量,再关联Product表获取商品信息,具体SQL如下:
SELECT p.productId, p.name, oi.total_quantity FROM Product p INNER JOIN ( -- 按productId汇总每个商品的总销量 SELECT productId, SUM(quantity) AS total_quantity FROM OrderItems GROUP BY productId ) oi ON p.productId = oi.productId -- 按总销量降序排列,得到期望的3、2、1顺序 ORDER BY oi.total_quantity DESC;
关键说明:
- 子查询部分先对
OrderItems按productId分组,用SUM(quantity)计算每个商品的总销量,这一步直接忽略了size和color的影响 - 关联
Product表时只需要匹配productId即可,不需要再关联size和color,避免了不必要的规格过滤 - 最后通过
ORDER BY oi.total_quantity DESC实现按总销量降序,就能得到你想要的productId 3、2、1的输出顺序
你原来的SQL问题在于没有做分组汇总,且错误地通过size和color关联导致无法合并同一商品不同规格的销量,上面的写法完美解决了这两个问题。
内容的提问来源于stack exchange,提问作者Dugong98
相关产品推荐
相关产品推荐

