Julio César Gázquez <[email protected]> wrote:
> Hi. > > I have an inheritance hierarchy on the form, C inherits B (with single table > inheritance), B inherits A (with joined table inheritance). > > The next query works perfectly: > > session.query(C)\ > .join(C.related_objects) > .filter( ... ) # Unrelated filtering conditions > > as the resulting SQL does the join between the tables for A.__tablename__ and > B.__tablename__, and filters B.__tablename__ using the discriminator column > in the WHERE. > > However, I need to do this: > > session.query(func.sum(RelatedTable.value))\ > .select_from(C)\ > .join(C.related_objects)\ > .filter( ... )\ # Unrelated filtering conditions > .one() > > While the select_from() still does correctly the A/B join, the filtering > condition is missing, so select_from(C) becomes the same as select_from(B). did you try 1.0.0b1 for this? The mechanics for single-table have been improved in this regard. > > I'm getting the right result using a explicit filter condition > "filter(C.discriminator == C_DISCRIMINATOR)", but I guess I'm missing > something. > > Is this a kind of special case where some extra syntax is required? I didn't > find anything relevant in the docs, neither in inheritance nor select_from() > parts. > > Thanks in advance. > > Julio. > > -- > 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 [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/d/optout. -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
