文章都是前一天晚上抽出固定时间写,第二天定点8:00准时推送,记录每日所学,所想,持续输入输出,不断分享,提升自己。
作为测试,日常难免会与sql打交道,那么多表连接你真的会吗?首先我们看下面的sql,多表连接时order_sale_item表既可以和订单order_sale表做关联也可以和售后子项表order_return_item做关联,我想都没多想,直接和订单表了关联:
SELECT-- 未入账仅退款数量IFNULL(sum( osi.price * ori.notInMS2SSQuantity ),0) AS amountFROMorder_return rINNER JOIN order_return_item ori ON r.id = ori.orderReturnIdINNER JOIN order_sale os ON os.id = r.orderSaleIdINNER JOIN order_sale_item osi ON osi.orderSaleId = os.idWHEREos.mallId = 5AND os.buyerType != 3AND r.type = 1AND r.state = 3AND ori.notInMS2SSQuantity >0AND os.supplierId = 15AND os.state!=-4

SELECT-- 未入账仅退款数量IFNULL(sum( osi.price * ori.notInMS2SSQuantity ),0) AS amountFROMorder_return rINNER JOIN order_return_item ori ON r.id = ori.orderReturnIdINNER JOIN order_sale_item osi ON osi.id = ori.orderSaleItemIdINNER JOIN order_sale os ON os.id = r.orderSaleIdWHEREos.mallId = 5AND os.buyerType != 3AND r.type = 1AND r.state = 3AND ori.notInMS2SSQuantity >0AND os.supplierId = 15AND os.state!=-4

那么为什么得出的结果不一致呢:我们需要订单子项表价格*售后子项表的数量,第一个sql订单表关联订单子项表,订单表又关联售后表,售后表关联售后子项表,而订单子项表和售后子项表无关联,导致sql执行的结果值不正确,示意图如下:

第二个sql售后表关联售后子项表,售后子项表关联订单子项表,订单子项表关联订单表,售后子项表关联订单子项表,订单子项表关联订单表,形成一条不分叉的直线,示意图如下:

文章转载自麦子酱OvO,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




