![](/img/trans.png)
[英]How can I join two queries on the same table with python / sqlalchemy?
[英]How can I join two queries on a common relationship in sqlalchemy?
假設我有兩個班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
。
我怎樣才能在擁有同一個parent
加入qa
和qb
?
與試用AliasedChildA.parent_id == subquery.c.parent_id
( and_
一些條款,如果你有一個復合峰)。
試試下面的:
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)
query_a.subquery().join(query_b.subquery(), $on_condition...)
對我有用:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.