MySQL结果集按组显示

时间:2009-09-07 20:46:31

标签: php resultset

我有一张表格如下:

Client_ID | Order_ID | 
10        | 1        | 
10        | 2        |
10        | 3        |
14        | 6        |
14        | 7        |
14        | 9        |

在PHP中是否有一种优雅的方式可以打印出这个结果集,从而证明了client_id组,而不是创建一个记住以前的Client_ID并验证它是否发生变化的循环。

客户端10:

  • 订单1
  • 订单2
  • 订单3

客户14:

  • 订单6
  • 订单7
  • 订单9

3 个答案:

答案 0 :(得分:2)

所有SQL都可以捕获一系列从一行到下一行没有关系的行。 PHP可以通过一个可能与你想象的一样的循环对这些结果强加一些结构:

$last_client_id = null;
while($row = mysql_fetch_assoc($results)) {
    if ($row['client_id'] != $last_client_id) {
        // Do whatever it is you do for each new client
    }
    // Do whatever it is you do for each order
    $last_client_id = $row['client_id'];
}

答案 1 :(得分:1)

看看GROUP_CONCAT函数: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

编辑:我想我错误地认为你是从数据库中获得的:/

答案 2 :(得分:1)

简短:不。

Long:上一次迭代怎么知道新的id会来?这里必须有一些案件处理,没有它就不可能。