首先说一下最近接到的一个需求
要求: 在商品详情页显示类似商品列表,
商品详情类别与查询结果要求
1. 类别相同
2. 第一优先级(供应商与品牌均相同)
3. 第二优先级(供应商相同品牌不同)
4. 第三优先级(供应商不同品牌相同)
5. 第四优先级(供应商与品牌均不相同)
6. 以上同一优先级时按销量倒叙
7. 每页显示20条记录
表结构及相关字段如下:
表名: 商品表: product 规格表: sku
字段: 类别: category_id, 商品编码: spu_code, 供应商编号: supplier_id, 品牌编号: brand_id, 销量: sale_quantity
注: 商品与规格为一对多关系或多对多关系
select *
from product p inner join sku on p.spu_code=sku.spu_code and sku.`status`=1
WHERE p.goods_state=1 and p.category_id3=30004
group by p.spu_code order by (case
when p.supplier_id=80 and p.brand_id=2969 THEN 0
when p.supplier_id=80 and p.brand_id!=2969 THEN 1
when p.supplier_id!=80 and p.brand_id=2969 THEN 2
else 3 END), SUM(sku.sale_quantity) DESC limit 0, 20;
此类需求虽然难度不高, 但处理起来也算需求点技巧,记录一下,便于以后遇到类似需求使用, 同时欢迎有更好解决方法的小伙伴们多多交流共同进步!