Codeigniter:如何在JOIN查询中包括SUM()和COUNT()?

时间:2018-08-07 19:43:56

标签: php mysql codeigniter

我的模型中有此方法

function get_users_details(){
        $this->db->select("a.*,sum('b.downloads') as downloads,COUNT('b.user_email') as uploads");
        $this->db->from('user a');
        $this->db->join('files b', 'a.email = b.user_email','inner');

        $query = $this->db->get();
        if($query->num_rows() > 0)
        {
            foreach ($query->result_array() as $row){
                $data[] = $row;
            }
        $query->free_result();
        return $data;
        }
        else{
            return false;
        }
    }

它仅返回单行中的值,而实际上应该返回多行中的值。

1 个答案:

答案 0 :(得分:2)

sum()和count()是聚合函数,除非将其与group_by语句结合使用,否则只会返回1行。

SELECT count(*) FROM table_a

将返回table_a中的总行数。

SELECT table_a.email, count(*) FROM table_a GROUP BY table_a.email

将返回每个电子邮件地址的总行数。

在codeigniter 3中,我们使用

$this->db->group_by("table_a.email");