SQL group by и order by вместе

224
23 декабря 2018, 17:10

составляю sql запрос через query builer в code igniter. Возникла такая проблема:

Нужно получить список диалогов пользователя, имеются следующие таблицы:

users:
id | nick | avatar
messages:
id | user_id | text | date

Пробовал два варианта:

$this->db->select('m.*, u.avatar, u.nick')
    ->from('users u')
    ->join($this->table . ' m', 'u.id = m.user_id', 'left')
    ->having("m.id != ''")
    ->group_by('m.user_id')
    ->order_by('m.date', 'desc');

и

$this->db->select('m.*, u.avatar, max(m.date)')
    ->from($this->table . ' m')
    ->join('users u', 'u.id = m.user_id', 'left')
    ->group_by('m.user_id')
    ->order_by('m.date', 'desc');

Сама проблема заключается в том, что список диалогов получается, но в качестве последнего сообщения - выводит первое сообщение и order by словно совсем не работает, пробовал и max(), и несколько колонок в group by. Помогите пожалуйста

Answer 1

Для списка диалогов пользователя, GROUP BY не нужен вообще

$this->db->select('m.*, u.avatar')
    ->from($this->table . ' m')
    ->join('users u', 'u.id = m.user_id', 'left')
    ->order_by('m.date', 'desc');
READ ALSO
Проблема с внутренними страницами WP

Проблема с внутренними страницами WP

Вечер добрый, развернул сайт у себя на локалкеИ при переходе на внутренние страницы выдает

215
Ошибка создания объекта класса fstream c++

Ошибка создания объекта класса fstream c++

100 процентов ошибка в этой строчке кодаВыдает ошибку сборки :

210
rvalue ссылки и переменные

rvalue ссылки и переменные

Можно использовать rvalue ссылки вместо переменных, если отбросить вопрос эффективности определения? Как видно из кода ниже разница в двух...

227