订单产品表(ProductOrderItem)
字段标题 字段名称 数据属性
Id标记 productorderitemid 主键
orderid orderid varchar
产品id productid int
总库产品id merchandiseid int
供货商id providerid int
产品通用名称 productname varchar
无效订单原因表(orderInvalid)
字段标题 字段名称 数据属性
Id标记 orderInvalidid 自动增值int
订单编号 orderid int
无效原因 InvalidContent varchar
提交时间 createtime datetime
产品购买表(ProductOrder)
字段标题 字段名称 数据属性
ID标记 orderid 自动增值id
购买时间 paytime datetime
产品名称 productname varchar
产品ID productid int
价格 price float
我想做一个查询实现以下功能:谢谢各位大侠
商品名称 单个产品无效订单数 无效原因 单个产品总订单数(无效订单数比例)
缺货 快递不支持 顾客联系不上
仙卡疤痕敌 37 30 5 2 74(1/2)
好迪 25 20 5 0 75(1/3)
要求就是要在一个JSP页面实现上面这个功能。按照商品名统计无效订单数,及各种 无效原因的无效订单数,设计三个表关联查询及子查询,谢谢啊
我的代码是:
select B.productname as '商品名称',
count(a.orderInvalidid) as 无效订单总数 ,
Sum(Case when A.InvalidContent='缺货' then 1 else 0 end ) as '缺货' ,
Sum(Case when A.InvalidContent='快递不支持' then 1 else 0 end) as '快递不支持' ,
Sum(Case when A.InvalidContent='顾客联系不上' then 1 else 0 end) as '顾客联系不上' ,
Sum(Case when A.InvalidContent='价格原因' then 1 else 0 end) as '价格原因',
Sum(Case when A.InvalidContent='未付款' then 1 else 0 end) as '未付款',
Sum(Case when A.InvalidContent='重复拍单' then 1 else 0 end) as '重复拍单',
Sum(Case when A.InvalidContent='拒收' then 1 else 0 end) as '拒收',
(select count(D.orderid) from productorder C Inner join ProductOrderItem D
on C.orderid =D.orderid) as 订单总数
from orderInvalid A Inner join ProductOrderItem B
on A.orderid =B.orderid group by B.productname
测试结果是:
(典舒)复方妥布霉素滴眼液 1 1 0 0 0 0 0 0 8356
(尔可芬)复方沙芬那敏糖浆 1 1 0 0 0 0 0 0 8356
(纷乐)硫酸羟氯喹片 1 0 0 0 0 1 0 0 8356
(康肤倍)咪康唑氯倍他索乳膏 1 0 0 0 0 1 0 0 8356
(立健亭)复方磷酸可待因溶液 1 1 0 0 0 0 0 0 8356
(美尔凯)奥硝唑栓 1 1 0 0 0 0 0 0 8356
(奇莫欣)胸腺肽肠溶片 1 0 0 0 0 1 0 0 8356
(泰利必妥)氧氟沙星滴耳剂 1 1 0 0 0 0 0 0 8356
/萘敏维滴眼液 1 1 0 0 0 0 0 0 8356
701跌打镇痛膏 1 0 0 0 1 0 0 0 8356
8普适泰片(舍尼通) 1 1 0 0 0 0 0 0 8356
AD钙镁肝油片 1 1 0 0 0 0 0 0 8356
E痘清 1 0 0 0 0 1 0 0 8356
阿达帕林凝胶 1 0 0 0 0 1 0 0 8356
阿德福韦酯片 1 0 0 0 0 0 0 0 8356
阿归养血糖浆 1 0 0 0 0 1 0 0 8356
阿咖酚散(头痛粉) 2 0 0 0 0 0 2 0 8356
阿米卡星洗剂 1 0 1 0 0 0 0 0 8356
阿莫西林胶囊 2 0 0 0 0 2 0 0 8356
艾附暖宫丸 3 1 0 0 0 2 0 0 8356
存在问题:(select count(D.orderid) from productorder C Inner join ProductOrderItem D
on C.orderid =D.orderid) as 订单总数 ,结果都是8356,请高手帮小弟纠错,谢谢~
6 个解决方案
#1
#2
好长
#3
關注+學習
#4
(select count(D.orderid) from productorder C Inner join ProductOrderItem D
on C.orderid =D.orderid and ---这个地方还要加和另外的表的关联(orderInvalid,ductOrderItem)
) as 订单总数
#5
请问怎么加呢?能详细写一下吗
#6
要加where 条件
如:
where c.某字段=a.某字段
如:
where c.某字段=a.某字段
#1
#2
好长
#3
關注+學習
#4
(select count(D.orderid) from productorder C Inner join ProductOrderItem D
on C.orderid =D.orderid and ---这个地方还要加和另外的表的关联(orderInvalid,ductOrderItem)
) as 订单总数
#5
请问怎么加呢?能详细写一下吗
#6
要加where 条件
如:
where c.某字段=a.某字段
如:
where c.某字段=a.某字段