4

我想用 CI 计算我的活动记录查询的结果(使用 postgreSQL)。我正在使用count_all_results(),它适用于大多数查询,但在使用时distinct()group_by()连接后不起作用,因为count_all_results()忽略了这些功能。

这是对此的修复,它尚未在最新的(2.1.3)稳定版本中实现。 https://github.com/EllisLab/CodeIgniter/commit/b05f506daba5dc954fc8bcae76b4a5f97a7433c1

当我尝试自己在当前版本中实施此修复时,没有完成额外的过滤。行数保持不变。

有关如何在当前版本中实现此功能的任何提示,或其他计算由distinct()or过滤的结果的方法group_by()

4

3 回答 3

8
    $this->db->select('COUNT(id)');
    $this->db->join();
    $this->db->distinct();
    $this->db->group_by();
//...etc ...
    $query = $this->db->get('mytable');

    return count($query->result()); 

或者

    $this->db->join();
    $this->db->distinct();
    $this->db->group_by();
//...etc ...
    $query = $this->db->get('mytable');

    return $query->num_rows(); 
于 2013-05-05T14:26:42.553 回答
1

您可以使用

$this->db->group_by();

否则

$this->db->distinct();
于 2014-09-30T12:18:55.610 回答
0

就我而言,从今天开始使用 Codeigniter 3.1.11,在执行 count_all_results() 时考虑 distinct()。但是,您必须使用该函数,执行 $this->db->select("distinct x") 然后进行计数,不会对记录计数应用 DISTINCT 限制。

于 2020-05-08T19:19:22.537 回答