我有点困惑,找不到合适的解决方案。我想根据品牌 ID 总结价值我有一个具有品牌 ID 的产品表,如下所示-----------------------------------| id | quantity | low | brand_id | |----|----------|-----|----------|| 1 | 100 | 100 | 1 | | 2 | 40 | 50 | 3 | | 3 | 10 | 5 | 2 | | 4 | 15 | 10 | 1 | | 5 | 6 | 10 | 2 | | 6 | 3 | 10 | 3 || 7 | 20 | 30 | 1 ||----|----------|-----|---------|我正在选择所有具有价值的产品$sql = "SELECT * FROM " . DB_PREFIX . "product WHERE brand = '" . (int)$brand_id . "'";然后,如果“数量”小于“低”,则运行该函数以获取“需要”库存,如下所示foreach ($query->rows as $product) { if ($product['quantity'] < $product['low']) { $provalue = $product['low'] - $product['quantity']; } else { $provalue = 0; }}到目前为止一切顺利,返回结果显示:----------------------------| brand_id | need ||--------------|-----------|| 1 | 0 || 3 | 10 || 2 | 0 || 1 | 0 || 2 | 4 || 3 | 7 || 1 | 10 ||--------------|-----------|但是,我试图将基于“brand_id”的“需要”的结果总结如下:----------------------------| brand_id | need ||--------------|-----------|| 1 | 10 || 2 | 4 || 3 | 17 ||--------------|-----------|请问有什么建议吗?先谢谢了!
2 回答
隔江千里
TA贡献1906条经验 获得超10个赞
您可以直接在查询中执行此操作:
$sql = "SELECT brand_id, SUM(GREATEST(0, low - quantity)) AS need FROM " . DB_PREFIX . "product GROUP BY brand_id";
GREATEST
当有足够quantity
的满足时,我们用来确保我们求和的值不是负数low
(即它相当于if
您代码中的语句)。
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
将您的 sql 查询更改为以下以计算查询本身的需求
$sql = "SELECT brand_id,SUM(low) - SUM(quantity) As Need FROM " . DB_PREFIX . "product WHERE quantity < low GROUP BY brand_id";
- 2 回答
- 0 关注
- 153 浏览
添加回答
举报
0/150
提交
取消