Как получить количество связанных записей в Postgresql?
Доброе время суток
В моем Rails проекте есть города и школы в них, то есть:
есть таблица cities
id | name
есть таблицы schools
id | name | city_id
нужно вывести таблицу cities в порядке убывания количества школ которые есть в каждом городе, то есть сделать по убыванию количества школ, а города в которых нет школ, вообще не получать
Конечно, в 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')
Zlat1997: 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')