【问题标题】:MySQL resultset display by groupMySQL 结果集按组显示
【发布时间】:2009-09-07 20:46:31
【问题描述】:

我有一个看起来像这样的表:

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

【问题讨论】:

    标签: php resultset


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        短:没有。

        Long:之前的迭代如何知道新的 id 即将到来?这里必须有某种案件处理,没有它是不可能的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-18
          • 1970-01-01
          • 2012-11-06
          • 2016-11-25
          • 2016-03-24
          • 2017-10-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多