我的购物车中有一件商品,需要在乘以每件商品的数量后计算SUM
发货重量。
让我们说:
items currently in-cart (pid): 11, 12, 67
items qty: 2, 5, 1
这些 pid 的表:
PHP 函数根据给定的pid
按merchant_code分组获取最大运输成本和总重量:
function get_g_checkout_shipment_fees($pids=array())
{
$q = "SELECT
merchant_code,
MAX(shipping_alt) AS max_g_shipment_cost,
SUM(weight) AS sum_g_shipment_weight ";
$q .= "FROM products ";
$q .= "WHERE pid IN(".implode(", ", $pids).") ";
$q .= "GROUP BY merchant_code";
$sql = $mysqli->query($q);
if($sql->num_rows > 0){
return $sql;
}
return false;
}
上述函数的输出:
这是我的问题,我想传递一个额外的数组参数(数量)来实现如下功能:
function get_g_checkout_shipment_fees($pids=array(), $qtys=array())
{
...
}
我需要将每个重量 * 数量
相乘,并得到SUM
货件重量和 GROUP BYmerchant_code
在找到SUM
发货重量之前,我需要进行必要的乘法,如下所示:
这就是我想要的结果:
如何在函数中做到这一点?这可能吗?
感谢任何帮助!
最佳答案
执行此操作的自然方法是将购物篮中的商品及其数量存储在表中。例如,以下代码使用派生表执行此操作:
SELECT merchant_code,
MAX(shipping_alt) AS max_g_shipment_cost,
SUM(weight) AS sum_g_shipment_weight,
SUM(weight * qty) as sum_weight_qty
FROM (SELECT 11 as pid, 2 as qty UNION ALL
SELECT 12, 5 UNION ALL
SELECT 67, 1
) pp JOIN
products p
ON p.pid = pp.pid
GROUP BY merchant_code;
如果产品/数量对存储在另一个表中或通过某种查询生成,则相同的逻辑将成立。
关于php mysql 按给定参数计算、求和和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455541/