2014-05-13 1 views
0

Так что прямо сейчас у меня есть сообщения и авторы ... Я хочу сделать раздел «20 последних сообщений» на моем сайте.Как я могу вытащить последние сообщения с уникальными авторами, чтобы, если автор написал два сообщения подряд, он получает только первое?

Иногда автор делает 4-5 сообщений в строке. В 20 последних сообщениях я хочу, чтобы на всех этих постах были уникальные авторы. Так что если автор A написал последние 3 сообщения на основе created_at, мне нужен только последний пост.

Гипотетический:

писали сообщения 10, 9, 7 Б написал сообщения 8, 6 С писало сообщения 5, 1 D писал сообщения 4, 3, 2

Тогда в последних 4 раздел, я бы хотел: 10, 8, 7, 6

Или любым другим способом, когда идентификатор автора уникален, и у меня есть 20 новых сообщений.

Я пробовал Post.select (: author_id) .distinct, mapping и другие биты здесь и там, но я не уверен, что пойду в правильном направлении.

Спасибо, ребята.

+0

исправьте меня, если я ошибаюсь, вы хотите последние 20 сообщений без двух последующих сообщений того же автора, не так ли? – Nimir

+0

Да. Даже не должно быть двух последующих должностей или чего-то подобного. Я предусмотрел гипотетическую ситуацию. На самом деле у автора иногда может быть 100-200 сообщений подряд, и они, как правило, занимают весь раздел «последние сообщения» на веб-сайте – dzjin

ответ

0

Это общая идея. Вы можете заполнить детали.

select author, maxts, etc 
from sometables join 
(select authorId, max(timestamp_field) maxts 
from etc 
where whatever 
group by authorId) temp on temp.authorId = author.authorId 
and sometable.timestamp_field = maxts 
where whatever 

Убедитесь, что «где угодно» одинаково в обоих местах.

Смежные вопросы