Группы сортировки SQL-запросов по последним публикациям - PullRequest
0 голосов
/ 12 февраля 2012

Я создаю приложение rails 3.

У него есть группы (например, социальные группы с членами и т. Д., И участники могут публиковать сообщения в группах).Итак, моя модель - это Group and Post, и группа has_many сообщений (у каждого из них (сообщений), очевидно, есть group_id).

Я пытаюсь выяснить, как получить список групп, отсортированных по последнему сообщениювключая группы без постов.

Спасибо!

Ответы [ 3 ]

1 голос
/ 12 февраля 2012

В зависимости от того, какие у вас столбцы, это может быть что-то вроде

select g.group_id, g.group_name, max( p.post_date )
from   group g left join post p on g.group_id = p.group_id
group by g.group_id, g.group_name
order by max( p.post_date ) desc
0 голосов
/ 18 июня 2013

Для любого, кто будет искать окончательное разрешение в рельсах 3, это будет выглядеть так:

sorted_groups_ids = Group.joins("LEFT JOIN posts p ON groups.id = p.group_id").select("groups.id").group("groups.id").order("MAX(p.id) DESC").map(&:id) sorted_groups = Group.find(sorted_groups_ids).sort_by { |g| sorted_groups_ids.index(g.id) }

вторая строка необходима, так как другой поиск разрывов предыдущий заказ

0 голосов
/ 12 февраля 2012
   Group.joins('LEFT OUTER JOIN posts ON groups.id = posts.group_id').order('posts.created_at desc').group('groups.id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...