我知道如何以一种非优雅、非实用的方式解决这个问题,也就是说,为共享的指定列中的每个值逐个发送请求,然后处理来自该特定输出的所有数据,然后对另一个值执行相同的操作,等等,但我想知道是否有人想出了一种优雅、实用的方法,这意味着所有这些都由一个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饼图,告诉我每个titlelocation的百分比。但在此之前,我需要一个输出shelf => 4(2+2)、drawer => 5(4+1)等的函数。
所以,问题是,有没有一种优雅、实用的方法来实现这一点?意思是,检索所有行,但按位置将所有数据组合在一起,然后将每个位置的数量相加,然后转换为饼图的百分比?
谢谢!

最佳答案

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

10-08 13:33
查看更多