50块求一句SQL语句,也许只需要您一分钟。。。内有说明。

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



SELECT CONCAT(order_sn)AS '订单号',pay_name as '付款方式', shipping_name as '配送方式', FROM_UNIXTIME(shipping_time) as '发货时间',
(CASE WHEN order_amount=0 THEN money_paid ELSE order_amount END ) as '金额'
FROM ecs_order_info WHERE shipping_status in (1,2) AND
TO_DAYS(FROM_UNIXTIME(shipping_time)) BETWEEN TO_DAYS('2012-03-01') AND TO_DAYS('2012-05-31')
ORDER BY order_sn asc

现在这句语句能列出指定日期的一些数据。如下:

订单号付款方式配送方式发货时间金额
2012052083318货到付款广东省内快递2012-05-21 10:19:59528.00
2012052179834支付宝申通快递2012-05-22 10:14:16109.00

这里的金融是订单的总金融。。

我的要求就是,需要把该订单的商品原价也给搞出来。。

回答:





你的 商品原价 是什么意思?
如果是商品加入购物车后的价格(包括促销、会员折扣),那么goods_amount 就可以如果不是的话,看你回复再说
而且你的总金额应该是实付金额吧,不包括用户的余额支付部分。
这样写也是有问题的,有时候已支付金额 money_paid, 和order_amount 可能同时都不为0.比如已支付50,还需支付100元

商品原价即后台添加商品时候的那个"市场售价"..

因为我们这边没那么复杂,没什么余额支付的。。

因为应该订单里面可能包含好几个商品信息,要进行连表查询,
你是要一个订单的总额, 还是每个商品分开的查询信息

订单号付款方式配送方式发货时间金额
2012052083318货到付款广东省内快递2012-05-21 10:19:59528.00
2012052179834支付宝申通快递2012-05-22 10:14:16109.00

这是原来语句查询的结果。我想查询结果可以是,比如啊:

订单号 付款方式配送方式发货时间金额 商品原价
2012052083318货到付款广东省内快递2012-05-21 10:19:59 528.00700
2012052179834支付宝申通快递2012-05-22 10:14:16109.00 200

这样。多个商品原价出来。
一个订单中商品的总额,不包含运费啊其他的金融,只需要商品的总金额。。




商品原价 会变动,不同时间查询结果可能不一样。这个有没有要求的?
如果要查询的是,当时下单时候的原价,目前还不支持,需要修改数据库






SELECT o.order_sn AS '订单号',o.pay_name as '付款方式', o.shipping_name as '配送方式', FROM_UNIXTIME(o.shipping_time) as '发货时间',
(CASE WHEN o.order_amount=0 THEN o.money_paid ELSE o.order_amount END ) as '金额', sum(g.shop_price*og.goods_number) AS '商品原价'
FROM eb_order_info AS o
LEFT JOIN eb_order_goods AS og ON o.order_id=og.order_id
LEFT JOIN eb_goods AS g ON og.goods_id=g.goods_id
WHERE o.shipping_status in (1,2) AND
TO_DAYS(FROM_UNIXTIME(o.shipping_time)) BETWEEN TO_DAYS('2012-03-01') AND TO_DAYS('2012-05-31')
GROUP BY o.order_id
ORDER BY o.order_sn asc;

要注意时间,数据库记录的是gmt时间,你比较的时候要注意。
最好把时间段转化成gmt时间戳直接比较
o.shipping_time between $start_time AND $end_time
FROM_UNIXTIME(o.shipping_time) as '发货时间' 这个也要注意,这样直接生成的是gmt时间
根据需要,把时差加上去: FROM_UNIXTIME(o.shipping_time+28800) as '发货时间',



感谢回复,不过在后台查询SQL出错。错误提示如下。不知能否再帮忙看下,如果可以运行很感谢楼主,可以贡献几个链接也行的。谢谢。

MySQL server error report:Array ( [0] => Array ( [message] => MySQL Query Error ) [1] => Array ( [sql] => SELECT o.order_sn AS '订单号',o.pay_name as '付款方式', o.shipping_name as '配送方式', FROM_UNIXTIME(o.shipping_time) as '发货时间', (CASE WHEN o.order_amount=0 THEN o.money_paid ELSE o.order_amount END ) as '金额', sum(g.shop_price*og.goods_number) AS '商品原价' FROM eb_order_info AS o LEFT JOIN eb_order_goods AS og ON o.order_id=og.order_id LEFT JOIN eb_goods AS g ON og.goods_id=g.goods_id WHERE o.shipping_status in (1,2) AND TO_DAYS(FROM_UNIXTIME(o.shipping_time)) BETWEEN TO_DAYS('2012-03-01') AND TO_DAYS('2012-05-31') GROUP BY o.order_id ORDER BY o.order_sn asc; ) [2] => Array ( [error] => Table '24320.eb_order_info' doesn't exist ) [3] => Array ( [errno] => 1146 ) )



可以了。感激。。楼主给个方式俺打款吧。看到请回。




我把前缀改了,我本地是这个前缀