On May 30, 2013, at 6:06 PM, Kent <jkentbo...@gmail.com> wrote:

> Thank you, I'll try that, but quick concern:  I specifically skipped trying 
> to use .subquery() because the docs say "Eager JOIN generation within the 
> query is disabled."
> 
> Doesn't that mean I won't get my joinedload() results from the inner query?
> 
> Or does that refer to the outer query having eager join disabled?


if you want to eager load also from that subquery, you need to sitck it into an 
aliased:


MySubqClass = aliased(MyClass, subq)

query(x, MySubqClass).options(joinedload(MySubqClass.foobar))




> 
> 
> On 5/30/2013 5:54 PM, Michael Bayer wrote:
>> 
>> On May 30, 2013, at 5:19 PM, Kent <jkentbo...@gmail.com
>> <mailto:jkentbo...@gmail.com>> wrote:
>> 
>>> 
>>> Solution A:
>>> ================
>>> Group by all columns (yielding the same effect as "distinct"), but
>>> which makes the window analytical function process *after* the group
>>> by and yields the correct count (17 instead of 72):
>> 
>> are all those columns indexed?  even if they are, crappy query...
>> 
>>> 
>>> OR Solution B:
>>> ================
>>> Put the "count(*) over ()" in an outer select, like this:
>>> 
>>> select count(*) over () as recordcount, anon.*
>>> from (
>>>  select distinct tablea.colx, tableb.coly
>>>  from tablea, tableb
>>> ) as anon
>>> limit 100
>> 
>> this is very much how SQLAlchemy wants you to do it.
>> 
>>> 
>>> Either solution yields the correct answer I believe, but I'm having
>>> difficulty translating the SQL that I know will work into sqlalchemy land.
>>> 
>>> 
>>> For Solution B, I don't know how to wrap my query in an outer select
>>> (similar to the LIMIT implementation for Oracle) in a way that will
>>> still allow sqlalchemy to extract rows into instances:
>> 
>> from_self() can do this (probably use add_column() for the window
>> function), or subquery() should work very well.   subq = q.subquery(); q
>> = query(func.count('*').over().label(..), subq); .
>> 
>> send me a quick example if that's not working and I'll work out the query.
>> 
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "sqlalchemy" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/sqlalchemy/_U28GXXR6sg/unsubscribe?hl=en.
>> To unsubscribe from this group and all its topics, send an email to
>> sqlalchemy+unsubscr...@googlegroups.com.
>> To post to this group, send email to sqlalchemy@googlegroups.com.
>> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
>> For more options, visit https://groups.google.com/groups/opt_out.
>> 
>> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 

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


Reply via email to