Сортировка по суммированному полю

ЗАКРЫТО InstantCMS 2.X
#1 11 октября 2021 в 13:47

Всем привет!

Делаю следующий запрос:

  1. $this->select('SUM(hits)', 'total')->orderBy('total', "desc")->groupBy('block_id')->get('table');

Пишет ошибка БД: Неизвестный столбец 'i.total' в 'order clause'

Почему не получается сортировка, что не так? Как сделать?

#2 11 октября 2021 в 14:29

Мне кажется, вы не верно понимаете SUM. Оно же вернет один результат, чего там сортировать?

А если это join, то действительно, столбец 'i.total' не будет. А будет алиас_приджойненной_таблицы.total

#3 11 октября 2021 в 14:36

Мне кажется, вы не верно понимаете SUM. Оно же вернет один результат, чего там сортировать?

Zau4man

Это Вы не понимаете или не внимательны! Почему должно вернуть один вариант, если идет groupBy('block_id')->

Сколько уникальных блоков, столько и результатов с суммированием значений из столбца hits

#4 11 октября 2021 в 14:40

orderBy('total', «desc»)

Вадим Нарочный

Здесь предполагается, что total это ячейка в базе данных. Если по виртуальному полю, то

  1. $this->order_by = 'total desc';

Оно же вернет один результат

Zau4man

Нет, если block_id, в данном случае, разный. Т.е. он вернёт список, где в ячейках с одинаковым block_id поле hits просуммируется.

#5 12 октября 2021 в 13:29

$this->order_by = 'total desc';

Fuze

Спасибо! Попробую!

Добавлено спустя 22 часа

Спасибо, работает!

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.