you'd have to use unions, or a custom SQL construct if your database happens to support the actual "FULL OUTER JOIN" syntax.
On Jul 12, 2010, at 9:26 AM, Daniel wrote: > One last question, is it possible to do a full outer join? > > Thanks, > > Daniel > > On Jul 11, 5:24 pm, Michael Bayer <[email protected]> wrote: >> On Jul 11, 2010, at 5:40 AM, Daniel wrote: >> >> >> >>>>> I've managed to fix it using sqalchemy.orm.outerjoin in conjunction >>>>> with query's select_from function. Out of interest, why is the naming >>>>> scheme different for these 2 functions? >> >>>> which two names/functions are you referring to ? >> >>> outerjoin and select_from, one seems to be lower case, the other, >>> lower case with underscores. Is this because one is a function and the >>> other is a method? >> >> we use lowercase with underscores for all names, but the underscores aren't >> applied to words that colloquially tend to be one word like "outerjoin". >> >> >> >>> unfortunately this: >> >>> query(Vote).outerjoin((Vote, subquery.c.max_id==Vote.id)) >> >>> generates invalid SQL and this: >> >>> query(Vote).outerjoin((subquery, subquery.c.max_id==Vote.id)) >> >>> has the join backwards, as ordering counts. I was trying things like: >> >>> subquery.outerjoin((Vote, subquery.c.max_id==Vote.id)) >> >>> This generates the rather indecipherable error "AttributeError: >>> '_TextClause' object has no attribute 'foreign_keys'". >> >> well in that last example subquery is not a Query() object, its an Alias >> construct. It has a different API and you should work through the SQL >> Expression Tutorial to get a feel for expression constructs. It probably >> shouldn't be making a text() construct out of a tuple, though. ticket 1847 >> >>> If you try >>> doing the same query, but don't generate a subquery first the error is >>> "Not unique table/alias: 'votes'". >> >>> But as I say I found a workaround using the orm.outerjoin function, so >>> this is rather academic from my perspective. >> >>> Thanks, >> >>> Daniel >> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group >>> athttp://groups.google.com/group/sqlalchemy?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
