I don't know how it would be implemented with DAL syntax, but you are 
talking about analytical window functions, which are supported by Oracle 
and Postgres, as far as I know--possibly others.

The SQL statement for this in Oracle would look like this, assuming your 
messages table only has subject, body, fromid, and timesent:

SELECT MAX(fromid)   KEEP (DENSE_RANK LAST ORDER BY timesent) AS fromid
      ,MAX(subject)  KEEP (DENSE_RANK LAST ORDER BY timesent) AS subject
      ,MAX(body)     KEEP (DENSE_RANK LAST ORDER BY timesent) AS body
      ,MAX(timesent) KEEP (DENSE_RANK LAST ORDER BY timesent) AS timesent
FROM messages
GROUP BY fromid;

For Postgres, I believe it would be something like:

SELECT fromid
      ,LAST_VALUE(subject)  OVER (ORDER BY timesent) AS subject
      ,LAST_VALUE(body)     OVER (ORDER BY timesent) AS body
      ,LAST_VALUE(timesent) OVER (ORDER BY timesent) AS timesent
FROM messages
GROUP BY fromid;

I made a small test case for the Oracle statement, and confirmed that it 
works. I don't have easy access to a Postgres instance, so I'm a bit less 
sure of it.

Given the odd/extended syntax of these SQL statements, I don't know whether 
it would be possible to use them with the DAL directly. I'd be interested 
in knowing if there were.
-d


On Monday, October 5, 2015 at 1:35:16 PM UTC-5, Daniel wrote:
>
> Hi all,
>
> I am trying to order messages so that the newest message from each user is 
> displayed. However when grouped by user, the oldest message is displayed 
> despite being ordered by timesent. Its like the groupby argument overrides 
> the orderby.
>
> messages = db(db.messages.toid == auth.user.id).select(db.messages.ALL, 
> orderby=~db.messages.timesent, groupby=db.messages.fromid)
>
>
> Thanks for your help
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to