That was of great help. Thanks a lot!! Adolfo
On Sep 27, 9:04 am, Michael Bayer <[EMAIL PROTECTED]> wrote: > On Sep 26, 2008, at 9:02 PM, adolfo wrote: > > > > > Hello, and sorry if this issue is already covered. > > I have a table which makes foreign references to other table, and I > > need to make a filter against that table multiple times. > > > so I have: > > > q1=session.query(Fuente).outerjoin(Fuente.PPersona, > > aliased=True).outerjoin(Fuente.PPersona_como_fuente, aliased=True) > > > i.e. Fuente makes more than one reference to table Persona, thru the > > properties PPersona and PPersona_como_fuente. > > > until here, it works fine. > > > Now if I need to construct a filter against Persona, how do I make > > explicit that I want to make a condition to a field of Persona > > as, for example, Fuente.PPersona.sexo and not > > Fuente.PPersona_como_fuente.sexo ? > > when you're dealing with the aliased=True approach, this is a > "shortcut" approach that apples the *most recent* alias to subsequent > filter expressions, such as: > > q1=session.query(Fuente).outerjoin(Fuente.PPersona, > aliased > = > True > ).filter(Persona.foo=='bar').outerjoin(Fuente.PPersona_como_fuente, > aliased=True).filter(Persona.bar=='foo') > > the first filter is against Fuente.PPersona, the second against > Fuenty.PPersona_como_fuente. > > Now, the "explicit" approach is to use aliases. In 0.5, its like this: > > p1 = aliased(Persona) > p2 = aliased(Persona) > q1=session.query(Fuente).outerjoin((p1, > Fuente.PPersona)).outerjoin((p2, Fuente.PPersona_como_fuente)) > > you then filter using p1 or p2: > > q.filter(p1.foo=='bar').filter(p2.bar=='foo') > > 0.4 doesn't have an ORM-level "aliased" construct, so this approach > requires using Table objects (using the Table.alias() method, > constructing the joins with the expression language and using > query.select_from(thejoin)) when working with 0.4. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
