On Thu, Dec 23, 2010 at 5:58 PM, Oleg Broytman <p...@phdru.name> wrote:
>    .select().max() produces a simple query SELECT MAX(). If you need a
> query with a subquery you need to add the subquery explicitly using
> sqlbuilder.Select():
>
> serial = Path.select(
>    Path.q.serial==Select('max(serial)', staticTables=['path']))
> return serial.getOne()

Thanks for your reply Oleg. I am sorry, but the above produces a bad query:

--
query = Sync.select(
    AND(
        Sync.q.syncpoint==self,
        Sync.q.serial==sqlbuilder.Select(MAX('serial'),
Sync.q.syncpoint==self, staticTables=('sync',))
    )
)
--

--
SELECT sync.id, sync.syncpoint_id, sync.serial, sync.stamp,
sync.status, sync.message FROM sync WHERE (((sync.syncpoint_id) = (1))
AND ((sync.serial) = (SELECT 'max(serial)' FROM sync WHERE
((sync.syncpoint_id) = (1)))));
--

As you can see, the 'max(serial)' ends up inside quotes within the
subselect. I can't find any MAX aggregate function to use in place of
the string...

Any additional hints?

------------------------------------------------------------------------------
Learn how Oracle Real Application Clusters (RAC) One Node allows customers
to consolidate database storage, standardize their database environment, and, 
should the need arise, upgrade to a full multi-node Oracle RAC database 
without downtime or disruption
http://p.sf.net/sfu/oracle-sfdevnl
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to