This feels like something that I ought to be able to find already
answered somewhere but I've been searching the archives and the
documentation and haven't been able to discover it.

Is it possible to construct an ORM query that includes eagerloaded
related objects such that the outer joins due to eagerload options and
regular joins to the same tables in the main query can be
consolidated?

For example if Session and Period are mapped object classes (to tables
sessions and periods), with a mapper relation "session" defined
between Period and Session, then a query like:

   query(Period).options(eagerload('session'))

will select from periods with an aliased outer join to sessions in order
to eager load the related sessions row.  

However, if I need to filter the query based on the related session to
limit the periods returned, and try something like:

   query(Period).join(Session).filter(Session.field == value).\
       options(eagerload('session'))

then, regardless of using join(Session) or outerjoin(Session), I get
two distinct joins between Period and Session, and does seem to resort
in more database work based on explain output (from PostgreSQL).

Since I know that I'm going to be doing the join to eager load the
related object, it would be nice if the fields from that join could be
used in the filtering operation.  But I haven't been able to figure
out how to get SA to make use of them.

Is there a way to either construct the initial ORM query so that the
joins can be re-used for eagerloading the associated objects, or
conversely so that the implicit joins created by the eagerload options
can be used to filter the primary query?

I'm currently using SA 0.5.4p2

Thanks.

-- David


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to