- 论坛徽章:
- 0
|
本帖最后由 work4seo 于 2019-08-14 11:22 编辑
表结构
payment_detail表包含:id、order_id、serial_id、order_price、coupon_fee这么几个字段。
分别是:id、订单id、支付流水号、订单金额、补贴费用;
refund_pc表:存储pc的退款订单信息
包含id、order_id、serial_id、order_price、refund_price、refund_coupon_fee这么几个字段。
分别是:id、订单id、支付流水号、订单金额、退款金额、退回的补贴费用;
refund_h5、refund_app表
字段结构与refund_pc完全一致,分别用来存储h5、app的退款订单信息。
同一个订单,在payment与refund表中的order_id是同一个,但其中的serial_id字段不是同一个值(每个涉及到金钱的流水号都是唯一的)
不知道如何实现的需求 :
一个用户支付完成之后,我就知道了payment_detail.serial_id = 'alipay_3773371a959d61c6831d5b3a0dd996c2'
但是如果这个用户发起退款,因为不知道是在哪个平台发起的退款,按理来说就要分别查3次表。
我要如何在一个sql里面通过if..else来分别查询不同的表?
先查一遍refund_pc,没查到order_id就再去查refund_h5;还没查到就接着去查refund_app
我希望产出的数据是:
payment_detail.order_id as order_id,
payment_detail.serial_id as serial_id,
payment_detail.order_price as order_price,
sum(refund_pc.refund_price,refund_h5.refund_price,refund_app.refund_price) as refund_price,
sum(refund_pc.refund_coupon_fee,refund_h5.refund_coupon_fee,refund_app.refund_coupon_fee) as refund_coupon_fee
在同一个平台中,用户产生的退款可能是分几次出现的。
如图:
|
|