簡體   English   中英

如何在 sqlalchemy 中加入關於公共關系的兩個查詢?

[英]How can I join two queries on a common relationship in sqlalchemy?

假設我有兩個班ChildAChildB這兩者有關系Parent 還假設我已經定義了兩個查詢qaqb ,它們查詢各自的子類。 我想在擁有相同的parent后將qb加入qa

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

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

這里, AliasedChildAChildA的別名。 (我可以完全控制查詢的創建方式,但不能控制稍后應用於它們的過濾器。)但是現在,由於parent是一種關系,因此它不包含在subquery.columns

我怎樣才能在擁有同一個parent加入qaqb

與試用AliasedChildA.parent_id == subquery.c.parent_idand_一些條款,如果你有一個復合峰)。

試試下面的:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM