'given a list of mappers (assumed to be within this mapper\'s
inheritance hierarchy), construct an outerjoin amongst those mapper\'s
mapped tables.'

def _selectable_from_mappers(self, mappers, innerjoin):

    from_obj = self.mapped_table
    for m in mappers:
        if (m is self):
            continue
        if m.concrete:
            raise sa_exc.InvalidRequestError("'with_polymorphic()'    requires    'selectable'    argument    when    concrete-inheriting    mappers    are    used.")
        elif (not m.single):
            if innerjoin:
                from_obj = from_obj.join(m.local_table, m.inherit_condition)
            else:
                from_obj = from_obj.outerjoin(m.local_table, m.inherit_condition)
    return from_obj
