2

假设我有两个类ChildAChildB它们都与Parent. 还假设我已经定义了两个查询,qaqb,它们查询各自的子类。我想qbqa拥有相同的parent.

如果parent只是一个普通的列,我可以执行以下操作:

subquery = qb.subquery()
joined_query = qa.join(subquery, AliasedChildA.parent==subquery.columns.parent)

这里,AliasedChildA是 的别名ChildA。(我可以完全控制如何创建查询,但不能控制稍后应用于它们的过滤器。)但是现在,由于parent是关系,它不包含在subquery.columns.

我怎样才能加入qaqb拥有相同的parent

4

3 回答 3

1

尝试使用AliasedChildA.parent_id == subquery.c.parent_idand_如果您有复合 pk,请使用一些子句)。

于 2012-11-24T13:23:45.907 回答
1

试试下面的:

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)
于 2012-11-26T10:35:07.773 回答
1
query_a.subquery().join(query_b.subquery(), $on_condition...)

为我工作:)

于 2020-07-29T07:18:12.913 回答