“改变订单中商品库存”函数中SQL语句疑问?

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

你好在/include/lib_order.php文件中 有一个
function change_order_goods_storage( ) 函数是用来改变订单中商品库存的

里面有sql如下:
。。。。
switch ($storage)
{
case 0 :
$sql = "SELECT goods_id, SUM(send_number) AS num, MAX(extension_code) AS extension_code, MAX(product_id) AS product_id FROM " . $GLOBALS['ecs']->table('order_goods') .
" WHERE order_id = '$order_id' AND is_real = 1 GROUP BY goods_id, product_id";
break;

case 1 :
$sql = "SELECT goods_id, SUM(goods_number) AS num, MAX(extension_code) AS extension_code, MAX(product_id) AS product_id FROM " . $GLOBALS['ecs']->table('order_goods') .
" WHERE order_id = '$order_id' AND is_real = 1 GROUP BY goods_id, product_id";
break;
}
。。。


请问上面的MAX(product_id) AS product_id可以换成product_id 吗?因为用 MAX(product_id)我发现程序经常出错

回答:


看了代码,不知官方为何加一个max,没看明白,应该可以替换,因为order_goods针对同一个goods_id的每条记录的product_id应该是唯一的,product_id代表的是商品品号id

后台“系统设置”里面的减库存的时机: 我开始选择的是 “发货时”运行正常,几个礼拜后我选择成 “下订单时”结果系统出问题了无法下订单提示执行这个SQL语句时发错了错误, 后台订单里面出现了用户提交很多重复订单 应该是用户下单出错了 可能都多尝试了几次

我看了一下然后把 MAX(product_id) AS product_id 换成product_id后 就正常了

product_id 有点错了 都是0和peoducts这张表不对应

这个地方为什么要加is_real = 1 这样虚拟商品的库存永远都不会减少了。有人懂不?