1

我知道如何以一种不优雅、不实用的方式解决这个问题,这意味着为共享的指定列中的每个值一个一个地发送请求,然后处理来自该特定输出的所有数据,然后对另一个值,等等,等等。但我想知道是否有人想到了一种优雅实用的方式,这意味着所有这些都由一个 PHP 函数处理。

基本上,我有这张桌子:

  location  |   title   | description | quantity 
============|===========|=============|==========
  shelf     |   apple   |    red      |    2
  drawer    |   banana  |    yellow   |    4
  shelf     |   kiwi    |    green    |    2
  cupboard  |   lemon   |    yellow   |    1
  fridge    |   melon   |    orange   |    3
  drawer    |   peach   |    orange   |    1

我最终想要的是创建一个 jQuery 饼图,告诉我title每个location. 但在此之前,我需要一个输出shelf => 4(2+2)、drawer => 5(4+1) 等的函数。

所以,问题是,有没有一种优雅、实用的方法来实现这一点?意思是,检索所有行,但按位置将所有数据组合在一起,然后将每个位置的数量相加,以便稍后转换为饼图的百分比?

谢谢!

4

2 回答 2

2
select location, sum (quantity) as sum_quantity from table group by location;

稍后使用$rows上述查询的结果,

function prepareForChart ($rows) {

  $ret = array();
  $total = 0;
  foreach ($rows as $el) $total += $el["sum_quantity"];

  foreach ($rows as $el) {
    $ret[] = array(
      $el["location"] => $el["sum_quantity"],
      "percentage"    => 100 * $el["sum_quantity"]/$total,
    );
  }

  return $ret;
}
于 2013-06-23T17:54:43.010 回答
1

这应该工作

SELECT location, SUM(quantity) as total_quantity
FROM table 
GROUP BY location
于 2013-06-23T17:53:51.160 回答