Python 如何在外部连接sqlalchemy中添加group by

Python 如何在外部连接sqlalchemy中添加group by,python,orm,sqlalchemy,Python,Orm,Sqlalchemy,我在sqlalchemy中加入同一张表3次。我想要分组依据ecs2.id如果ecs2.school\u class\u id==None(分组依据以防返回任何结果) 我已按“ecs2.id”添加了分组,但如果ecs2.id为None,则它将分组。这意味着它不返回任何结果,因此任何连接ecs2的结果都是空的,那么只返回一个结果 此查询工作正常,但有时会在重复的ecs.id或ecs.school\u class\u id ecs1 = aliased(EmployeeClassSubject) ec

我在sqlalchemy中加入同一张表3次。我想要分组依据
ecs2.id
如果
ecs2.school\u class\u id==None
(分组依据以防返回任何结果)

我已按“ecs2.id”添加了分组,但如果ecs2.id为None,则它将分组。这意味着它不返回任何结果,因此任何连接
ecs2
的结果都是空的,那么只返回一个结果

此查询工作正常,但有时会在重复的
ecs.id
ecs.school\u class\u id

ecs1 = aliased(EmployeeClassSubject)
ecs2 = aliased(EmployeeClassSubject)
ecs3 = aliased(EmployeeClassSubject)
sc1 = aliased(SchoolClass)
sc2 = aliased(SchoolClass)
e1 = aliased(Employee)
e2 = aliased(Employee)
emp = db.session.query(e1, School.name, ecs1, ecs2, sc1, sc2, Subject.id, 
                         Subject.name,BusInf,ecs3.employee_id,e2.name).\
    join(School, School.id == e1.school_id).\
    outerjoin(sc1, and_(sc1.school_id == School.id,
                         sc1.status == GenEnum.ACTIVE.value,
                         e1.employee_type.in_(super_users))).\
    outerjoin(ecs1, and_(ecs1.school_class_id == sc1.id,
                         ecs1.status == GenEnum.ACTIVE.value,
                         ecs1.relation == OtherType.CLASS_TEACHER.value)).\
    outerjoin(e2, e2.id == ecs1.employee_id).\
    outerjoin(ecs2, and_(ecs2.employee_id == e1.id,
                         ecs2.status == GenEnum.ACTIVE.value,
                         e1.employee_type.notin_(super_users))).\
    outerjoin(sc2, and_(sc2.id == ecs2.school_class_id,
                         sc2.status == GenEnum.ACTIVE.value)).\
    outerjoin(ecs3, and_(ecs3.school_class_id == ecs2.school_class_id,
                         ecs3.status == GenEnum.ACTIVE.value,
                         ecs3.relation == OtherType.CLASS_TEACHER.value)).\
    outerjoin(Subject, and_(Subject.id == ecs2.subject_id,
                         ecs2.subject_id != None)).\
    outerjoin(BusInf, and_(BusInf.contact_person == e1.id,
                         e1.employee_type == UserType.SUPPORTINGSTAFF.value)).\
    filter(e1.id == login_employee[2].id).\
    order_by(sc1.standard, sc1.division, sc2.standard, sc2.division).all()
当我添加groupby函数时

ecs1 = aliased(EmployeeClassSubject)
ecs2 = aliased(EmployeeClassSubject)
ecs3 = aliased(EmployeeClassSubject)
sc1 = aliased(SchoolClass)
sc2 = aliased(SchoolClass)
e1 = aliased(Employee)
e2 = aliased(Employee)
emp = db.session.query(e1, School.name, ecs1, ecs2, sc1, sc2, Subject.id, 
                         Subject.name,BusInf,ecs3.employee_id,e2.name).\
    join(School, School.id == e1.school_id).\
    outerjoin(sc1, and_(sc1.school_id == School.id,
                         sc1.status == GenEnum.ACTIVE.value,
                         e1.employee_type.in_(super_users))).\
    outerjoin(ecs1, and_(ecs1.school_class_id == sc1.id,
                         ecs1.status == GenEnum.ACTIVE.value,
                         ecs1.relation == OtherType.CLASS_TEACHER.value)).\
    outerjoin(e2, e2.id == ecs1.employee_id).\
    outerjoin(ecs2, and_(ecs2.employee_id == e1.id,
                         ecs2.status == GenEnum.ACTIVE.value,
                         e1.employee_type.notin_(super_users))).\
    outerjoin(sc2, and_(sc2.id == ecs2.school_class_id,
                         sc2.status == GenEnum.ACTIVE.value)).\
    outerjoin(ecs3, and_(ecs3.school_class_id == ecs2.school_class_id,
                         ecs3.status == GenEnum.ACTIVE.value,
                         ecs3.relation == OtherType.CLASS_TEACHER.value)).\
    outerjoin(Subject, and_(Subject.id == ecs2.subject_id,
                         ecs2.subject_id != None)).\
    outerjoin(BusInf, and_(BusInf.contact_person == e1.id,
                         e1.employee_type == UserType.SUPPORTINGSTAFF.value)).\
    filter(e1.id == login_employee[2].id).\
    group_by(ecs2.id).\
    order_by(sc1.standard, sc1.division, sc2.standard, sc2.division).all()
当ecs2不是None时,这可以正常工作,但在其他情况下,它只返回一个结果

在sqlalchemy中,有没有任何方法可以使组处于条件下