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