【发布时间】:2012-07-23 16:46:58
【问题描述】:
假设我有以下来自 mysql DB 调用的结果集(基本示例,main 将有更多数据):
customerID | name | item | price
====================================================
11111 | John | pizza | 10.00
11111 | John | burger | 5.00
11111 | John | drink | 2.00
22222 | Mike | lasagna | 11.00
22222 | Mike | drink | 2.00
33333 | Sam | burger | 5.00
33333 | Sam | fries | 3.00
33333 | Sam | shake | 5.00
33333 | Sam | drink | 2.00
我想以表格形式显示结果,但限制 customerID 和 name 出现的次数,以及按每个客户显示小计:
customerID | name | item | price
===================================================
11111 | John | pizza | 10.00
| | burger | 5.00
| | drink | 2.00
| | | **17.00**
| | |
22222 | Mike | lasagna | 11.00
| | drink | 2.00
| | | **13.00**
| | |
33333 | Sam | burger | 5.00
| | fries | 3.00
| | shake | 5.00
| | drink | 2.00
| | | **15.00**
我知道我可以进行多个数据库调用,但是如果可以一次性完成,那就太浪费了。我在通过表 1 中的结果集循环并使用 PHP 正确格式化时遇到问题,如表 2 所示。我是否有可能显示它的方式,或者我 必须 进行多个 DB 调用这样做?
【问题讨论】:
-
您可以使用
GROUP BY customerID, name WITH ROLLUP语法(more about it)将组总数与普通行一起返回,因此不需要多次查询。我会在客户端代码中完成所有其他工作,因为它本质上是一个表示问题。 -
不要做数据库端,这是基本的应用程序逻辑。只需遍历结果并创建一个具有所需结构的新数组。