猿问

根据相同 ID 汇总查询值

我有点困惑,找不到合适的解决方案。我想根据品牌 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     |

|--------------|-----------|

请问有什么建议吗?先谢谢了!


慕森卡
浏览 154回答 2
2回答

隔江千里

您可以直接在查询中执行此操作:$sql&nbsp;=&nbsp;"SELECT&nbsp;brand_id,&nbsp;SUM(GREATEST(0,&nbsp;low&nbsp;-&nbsp;quantity))&nbsp;AS&nbsp;need &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;"&nbsp;.&nbsp;DB_PREFIX&nbsp;.&nbsp;"product&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GROUP&nbsp;BY&nbsp;brand_id";GREATEST当有足够quantity的满足时,我们用来确保我们求和的值不是负数low(即它相当于if您代码中的语句)。

梵蒂冈之花

将您的 sql 查询更改为以下以计算查询本身的需求$sql&nbsp;=&nbsp;"SELECT&nbsp;brand_id,SUM(low)&nbsp;-&nbsp;&nbsp;SUM(quantity)&nbsp;As&nbsp;Need&nbsp;FROM&nbsp;"&nbsp;.&nbsp;DB_PREFIX&nbsp;.&nbsp;"product&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WHERE&nbsp;&nbsp;quantity&nbsp;<&nbsp;low&nbsp;GROUP&nbsp;BY&nbsp;brand_id";
随时随地看视频慕课网APP
我要回答