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.