为了账号安全,请及时绑定邮箱和手机立即绑定

根据相同 ID 汇总查询值

根据相同 ID 汇总查询值

PHP
慕森卡 2021-12-03 19:29:39
我有点困惑,找不到合适的解决方案。我想根据品牌 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您代码中的语句)。


查看完整回答
反对 回复 2021-12-03
?
梵蒂冈之花

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


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 153 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信