php mysql根据给定的参数计算,求和

时间:2017-01-04 02:57:00

标签: php mysql group-by sum

我有一个购物车商品,需要在乘以每件商品的数量后计算SUM货件重量。

我们说:

items currently in-cart (pid): 11, 12, 67
items qty: 2, 5, 1

这些pid的表格:

enter image description here

PHP函数按给定pids merchant_code 获取 MAX出货成本 SUM权重组:

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;
}

以上功能的输出:

enter image description here

这是我的问题,我想传递一个额外的数组参数(qty's)来实现如下功能:

function get_g_checkout_shipment_fees($pids=array(), $qtys=array())
{
    ...
}

我需要将每个weight * qty相乘并得到SUM货件重量和GROUP BY merchant_code

在找到SUM装运重量之前,我需要进行必要的乘法运算:

enter image description here

这就是我想要的结果:

enter image description here

如何在功能中执行此操作?那可能吗?

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

这样做的自然方法是将购物篮项目与其数量存储在一个表格中。例如,以下使用派生表执行此操作:

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;

如果产品/数量对存储在另一个表中或由某种查询生成,则相同的逻辑将成立。