我的模型中有这个方法
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;
}
}
它只从单行返回值,而实际上它应该从多行返回值。
最佳答案
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");
关于php - Codeigniter:如何在 JOIN 查询中包含 SUM() 和 COUNT()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51734356/