> On Oct 20, 2014, at 1:14 PM, Peter Waller <pe...@scraperwiki.com> wrote: > > Hi All, > > I am wondering if it is possible to describe in sqlalchemy the > following relationship with the new features introduced since 0.9.2. > I've been reading this document and it looks close to what I'm trying > to achieve: > >> http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#composite-secondary-joins > > As does this previous mailing list post: > >> https://groups.google.com/d/topic/sqlalchemy/ov-mYWA7XAM/discussion > > There is a pre-existing structure to deal with. I would rather not > change the structure if it can be avoided, but may have to resort to > doing so. Here are the tables: > > TableName (column, ...) > >> PersonAction (PersonID, ActionID) >> PersonUnit (PersonID, UnitID) >> DepartmentUnit (UnitID, DepartmentID) >> ActionMeaning (DepartmentID, ActionID)
So as far as the patterns at http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html, this one qualifies for http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#relationship-to-non-primary-mapper. The reason is because PersonAction has a direct FK to ActionMeaning (ActionID) as well as towards elements on what would be “secondary” here, PersonUnit/DepartmentUnit. The criteria for that is: "we seek to join from A to B, making use of any number of C, D, etc. in between, however there are also join conditions between A and B directly.” So you map ActionMeaning using a non-primary mapper to a join of ActionMeaning, DepartmentUnit, and PersonUnit, then PersonAction can relate to this mapper directly. -- 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. For more options, visit https://groups.google.com/d/optout.