Codeigniter: Как включить SUM () и COUNT () в запрос JOIN?

0

У меня этот метод в моей модели

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;
        }
    }

Он возвращает только значения из одной строки, в то время как на самом деле он должен возвращать значения из нескольких строк.

  • 0
    Исправьте эту строку - $this->db->select("a.*,sum( Sum $this->db->select("a.*,sum( b.downloads ) as downloads,COUNT( b.user_email ) as uploads");
  • 0
    Как это должно быть написано
Теги:
codeigniter

1 ответ

2
Лучший ответ

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");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню