thinkphp3.2分组统计查询分页

ThinkPHP3.* / 342人浏览 / 0人评论

想在使用thinkphp3.2开发的系统中使用分组查询数据库表并且实现分页怎么办?在一个需要维护的站点需要这个操作,解决案例如下。你也可以使用其他办法解决分组问题。仅供遇到此问题的朋友们参考。通过data_id分组,在count统计中使用distinct(data_id),才能统计出正确的分组记录。

thinkphp3.2

想在使用thinkphp3.2开发的系统中使用分组查询数据库表并且实现分页怎么办?

在一个需要维护的站点需要这个操作,解决案例如下。

你也可以使用其他办法解决分组问题。

仅供遇到此问题的朋友们参考。

通过user_id分组,在count统计中使用distinct(user_id),才能统计出正确的分组记录。

统计学生的总成绩,使用sum(score) as scores,scores为score字段别名。

查询中未使用where进行条件筛选。

$page = 1;
$pageSize = 15;
$lists = M('course','std_','DB_COURSE')
    ->field('id,user_id,create_time,update_time,sum(score) as scores')
    ->group('user_id')
    ->order('id desc')
    ->page($page)
    ->limit($pageSize)
    ->select();

$count = M('course','std_','DB_COURSE')
    ->count('distinct(user_id)');

var_dump($lists);
var_dump($count);

打印看下效果


array(3) {
  [0]=>
  array(5) {
    ["id"]=>
    string(2) "26"
    ["user_id"]=>
    string(2) "20"
    ["create_time"]=>
    string(10) "1575542486"
    ["update_time"]=>
    string(10) "1575542486"
    ["scores"]=>
    string(5) "707.0"
  }
  [1]=>
  array(5) {
    ["id"]=>
    string(2) "18"
    ["user_id"]=>
    string(2) "50"
    ["create_time"]=>
    string(10) "1575542486"
    ["update_time"]=>
    string(10) "1575542486"
    ["scores"]=>
    string(5) "722.0"
  }
  [2]=>
  array(5) {
    ["id"]=>
    string(2) "10"
    ["user_id"]=>
    string(3) "100"
    ["create_time"]=>
    string(10) "1575542486"
    ["update_time"]=>
    string(10) "1575542486"
    ["scores"]=>
    string(5) "754.0"
  }
}
string(1) "3"

转载注明:

扩展查找

0 条评论

还没有人发表评论

发表评论 取消回复

记住我的信息,方便下次评论
有人回复时邮件通知我