根据商品编号模糊查询商品分类

背景:

商品分类表

商品表

用户收藏商品表

 

需求 :

根据用户收藏的商品,统计出用户各类商品收藏数量

商品的CATEID可以辨识出商品属于哪类商品

 

原先的sql

SELECT p.cateName,
	p.cateId,
	COUNT(*) i
FROM CN_SUPPLY_COLLECT c
	INNER JOIN cn_supplys s ON c.supplyId=s.supplyId
	INNER JOIN cn_code_category g ON s.cateId=g.cateId
	INNER JOIN cn_code_parent_category p ON g.topId    =p.cateId
WHERE c.userId='css3020536'
GROUP BY 
	p.cateName, p.cateId

 

多表关联查询效率低

商品的顶级分类 可以只有几个 但关联查询特别慢

于是SQL语句改为直接根据商品CATEID辨别出商品的分类

SELECT DECODE(pid , 'A','船舶设备','B', '船舶备件', 'C','船舶物资', 'D','船厂设备', NULL) CATENAME, 
  pid CATEID, 
  COUNT(pid) I 
FROM 
  (SELECT 
    CASE 
      WHEN instr(a.cateId, 'E50') = 1 
      THEN 'D' 
      WHEN instr(a.cateId, 'S') = 1 
      THEN 'B' 
      WHEN instr(a.cateId, 'G') = 1 
      THEN 'C' 
      WHEN instr(a.cateId, 'E') = 1 
      THEN 'A' 
      ELSE NULL 
    END pid 
  FROM CN_SUPPLY_COLLECT b 
  INNER JOIN cn_supplys a 
  ON a.supplyId  = b.supplyId 
  WHERE b.userId = 'css3020536' 
  ) 
GROUP BY PID;

 

查询效果


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值