当指定列中的项具有相同值时,合并SQL数据库值


Merge SQL database values when items have same value in specified column

我知道如何以一种不优雅、不实用的方式解决这个问题,也就是说,为共享的指定列中的每个值逐个发送请求,然后处理该特定输出中的所有数据,然后对另一个值执行同样的操作,等等。但我想知道是否有人想到了一种优雅而实用的方式,这意味着所有这些都由一个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饼图,告诉每个locationtitle的百分比。但在此之前,我需要一个输出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;
}

这应该能在中工作

SELECT location, SUM(quantity) as total_quantity
FROM table 
GROUP BY location