我有一个购物车商品,需要在乘以每件商品的数量后计算SUM
货件重量。
我们说:
items currently in-cart (pid): 11, 12, 67
items qty: 2, 5, 1
这些pid的表格:
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;
}
以上功能的输出:
这是我的问题,我想传递一个额外的数组参数(qty's)来实现如下功能:
function get_g_checkout_shipment_fees($pids=array(), $qtys=array())
{
...
}
我需要将每个weight * qty
相乘并得到SUM
货件重量和GROUP BY merchant_code
在找到SUM
装运重量之前,我需要进行必要的乘法运算:
这就是我想要的结果:
如何在功能中执行此操作?那可能吗?
任何帮助表示赞赏!
答案 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;
如果产品/数量对存储在另一个表中或由某种查询生成,则相同的逻辑将成立。