DahuangPhoneLAMPThinkPHP → ThinkPHP 统计查询


  共有6294人关注过本帖平板打印复制链接

主题:ThinkPHP 统计查询

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
ThinkPHP 统计查询  发帖心情 Post By:2014/1/5 20:13:29 [只看该作者]

http://hi.baidu.com/tangzhen123456/item/d17a4102580eb6e5905718a3


统计查询

在应用中我们经常会用到一些统计数据,例如当前所有(或者满足某些条件)的用户数、所有用户的最大积分、学生的平均成绩等等,ThinkPHP 为这些统计操作提供了一系列的内置方法:

  1. count():统计数据行数

  2. max():统计某个字段最大数据

  3. min():统计某个字段最小数据

  4. avg():统计某个字段平均数据

  5. sum():统计某个字段数据之和

上述统计查询方法都是独立的方法且支持连贯操作。

count()

count() 方法用于统计数据行数。

例子:

public function read(){
    $Dao = M('User');
    // 获取用户数:
    $userCount = $Dao->count();
    // 添加条件:
    $userCount2 = $Dao->where('uid > 10')->count();

    $this->assign('userCount', $userCount);
    $this->display();
}

上例中,两个查询语句实际执行的 SQL 为:

SELECT COUNT(*) AS tp_count FROM user LIMIT 1 
SELECT COUNT(*) AS tp_count FROM user WHERE uid > 10 LIMIT 1

可以在模板中直接输出得到的统计数据:

共有用户 {$userCount} 人。
max()

max() 方法用于统计某个字段最大数据。

统计用户最大积分例子:

$maxScore = $Dao->max('score');

实际执行的 SQL 为:

SELECT MAX(score) AS tp_max FROM user LIMIT 1 
min()

min() 统计某个字段最小数据。

获取积分大于 0 的用户的最小积分例子:

$minScore = $Dao->where('score>0')->min('score');

实际执行的 SQL 为:

实际执行SQL:SELECT MIN(score) AS tp_min FROM user WHERE score>0 LIMIT 1
avg()

avg() 统计某个字段平均数据。

获取用户的平均积分例子:

$avgScore = $Dao->avg('score');

实际执行的 SQL 为:

SELECT AVG(score) AS tp_avg FROM user LIMIT 1
sum()

sum() 统计某个字段数据之和。

统计积分排名前 10 名用户的积分之和:

$sumScore = $Dao->order('score DESC')->limit('10')->avg('score');

实际执行的 SQL 为:

SELECT SUM(score) AS tp_sum FROM user ORDER BY score DESC LIMIT 1 

所有的统计查询如 select() 方法一样。均支持连贯操作的使用,根据实际情况添加不同的查询条件。

[此贴子已经被作者于2014/1/5 20:14:23编辑过]

 回到顶部