Find last entry from each category

Hi,

can anybody help me with to specify a SQL-statement which should do
following:

Example table (published_at is a DateTime field)

id | content | published_at | author_id

1 | foo | 2010 | 1
2 | foo | 2009 | 1
3 | foo | 2008 | 1
4 | foo | 2010 | 2
5 | foo | 2009 | 2
6 | foo | 2008 | 2
7 | foo | 2007 | 3

Now, how can I get the last entry (max published_at) for each author
The result should be a array with news items 1,4,7

Thanks!

No ideas to solve this problem? :frowning:

On 10 May 2010 10:09, Sebastian K. [email protected] wrote:

how can I get the last entry (max published_at) for each author
The result should be a array with news items 1,4,7

Have you looked at using the “group_by” method of Enumberable?

http://apidock.com/rails/Enumerable/group_by

You could use it to group by author_id and then select the latest
entry from each array.

In raw SQL:
SELECT id, author_id, max(published_at) FROM 'entries group by user_id

Or in Rails finder:
Entry.all(:select => “*, max(published_at)”, :group => :author_id)

Have you read the ActiveRecord API docs? It’s all in there…