用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4428|回复: 2
收起左侧

[已解决] 谁遇见这种情况没?当count_all_results遇见group_by

[复制链接]
发表于 2011-3-16 21:36:05 | 显示全部楼层 |阅读模式
本帖最后由 feiying0193 于 2011-3-16 21:49 编辑

当count_all_results遇见group_by

PHP代码:
PHP复制代码
 
$this->db->group_by('row');
$num_rows = $this->db->count_all_results('table');
 
 
复制代码


执行的语句是:

SQL复制代码
 
SELECT COUNT(*) AS `numrows` FROM (`table`) GROUP BY `row`
 
复制代码



不管怎么弄,结果肯定和预计的不一样。

比如row的结果可能就是

1
1
2
3
1
5
1

而实际结果是:7
上面数字的行数。
用count_all_results的结果就是1,第一行的数据
有谁遇见这种情况?该怎么解决?

要是没有解决办法,那只有用
PHP复制代码
 
$this->db->group_by('row');
$query=$this->db->get('table');
$query->num_rows();
 
复制代码

来解决了。
发表于 2011-3-16 22:23:36 | 显示全部楼层
组群,那就是取回结果集,而不是行吧。是不是用错方法了
PHP复制代码
 
$result = $query->result();
foreach( $result as $row)
  $row->numrows;
 
复制代码
 楼主| 发表于 2011-5-1 10:15:42 | 显示全部楼层
count_all_results取得的结果是搜索数据库后的行数,得到的结果应该是一个数值。
而group_by()的结果是按字段合计行数,即得到各个相同字段的数量。
count_all_results和group_by()合起来用的话得到的结果就不是一个数值,而是一个array()了。
所以在CodeIgniter中count_all_results的Active Record限制函数中应该不能适应group_by()函数。

本版积分规则