Как исправить ошибку в Codeigniter при выполнении запроса ONLY_FULL_GROUP_BY? - PullRequest
0 голосов
/ 02 апреля 2020

друзья, надеюсь, вы поможете мне. У меня возникла проблема в этой консультации, я делал это по-разному, но у меня всегда одна и та же ошибка. Единственный способ избежать ошибки - деактивировать переменную ONLY_FULL_GROUP_BY, равную mysql. Кто-нибудь знает, как заставить мой запрос работать без деактивации переменной, спасибо

function get_chart_income()
{
 $this->db->select('SUM(income.amount) AS chart_total_income, income.created_at'); 
 $this->db->group_by('DATE_FORMAT(income.created_at, "%Y-%m")');
 $this->db->order_by('income.created_at ASC');
 $this->db->limit(9);
 return $this->db->get('income')->result_array();


}

введите описание изображения здесь

1 Ответ

0 голосов
/ 02 апреля 2020

Если вы собираетесь агрегировать только по годам и месяцам, то не имеет смысла выбирать полную дату, которая также будет включать компонент дня (и, возможно, времени). Причина, по которой это не имеет смысла, заключается в том, что MySQL неясно, какой день вы хотите выбрать (данный год и месяц могут иметь много разных значений дня). Скорее всего, правильным решением здесь будет просто выбрать тот же вызов DATE_FORMAT, который указан в предложении GROUP BY:

function get_chart_income() {
    $sql <- "SUM(income.amount) AS chart_total_income, DATE_FORMAT(income.created_at, '%Y-%m') AS created_at";
    $this->db->select($sql);
    $this->db->group_by('created_at');
    $this->db->order_by('created_at');
    $this->db->limit(9);
    return $this->db->get('income')->result_array();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...