@Zlat1997

Как получить количество связанных записей в Postgresql?

Доброе время суток
В моем Rails проекте есть города и школы в них, то есть:
есть таблица cities
id | name
есть таблицы schools
id | name | city_id
нужно вывести таблицу cities в порядке убывания количества школ которые есть в каждом городе, то есть сделать по убыванию количества школ, а города в которых нет школ, вообще не получать

Заранее спасибо.
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
@thepry
Ruby on rails, 1С разработчик
В рельсах примерно так
City.includes(:schools).sort_by{ |city| city.schools.size }.reverse

Конечно, в City должна быть проставлена связь has_many :schools. Или нужно на SQL отсортировать?

UPDATE: На SQL примерно так:
City.joins('LEFT JOIN (SELECT city_id, count(id) AS counted_id FROM schools GROUP BY city_id) AS t2 ON cities.id = t2.city_id').order('COALESCE(counted_id, 0) DESC')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы