假设我有两个类 ChildA
和 ChildB
,它们都与 Parent
有关系。
还假设我已经定义了两个查询,qa
和 qb
,它们查询各自的子类。
我想在具有相同的 parent
时将 qb
加入到 qa
中。
如果 parent
只是一个普通的列,我可以执行以下操作:
subquery = qb.subquery()
joined_query = qa.join(subquery, AliasedChildA.parent==subquery.columns.parent)
此处,AliasedChildA
是 ChildA
的别名。 (我可以完全控制查询的创建方式,但不能控制稍后应用于它们的过滤器。)
但现在,由于 parent
是一种关系,因此它不包含在 subquery.columns
中。
如果拥有相同的父级
,如何加入qa
和qb
?
最佳答案
尝试以下操作:
qa = session.query(ChildA)
qb = session.query(ChildB)
# @note: *qa* and *qb* may include other filters etc,
# but assuming they do not contain joins on *Parent*
subquery = qb.subquery()
qry = qa.join(Parent).join(subquery)
关于python - 如何在 sqlalchemy 中连接两个关于公共(public)关系的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13510394/