У меня этот метод в моей модели
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() являются агрегатными функциями и возвращают только 1 строку, если вы не объедините ее с оператором group_by.
SELECT count(*) FROM table_a
будет возвращать общее количество строк в таблице_a.
SELECT table_a.email, count(*) FROM table_a GROUP BY table_a.email
вернет общее количество строк PER адреса электронной почты.
В Codeigniter 3 мы используем
$this->db->group_by("table_a.email");
$this->db->select("a.*,sum(
Sum$this->db->select("a.*,sum(
b.downloads) as downloads,COUNT(
b.user_email) as uploads");