如何使用SQLAlchemy创建左外连接到一个表

2024-06-09 22:07:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力理解如何在SQLAlchemy中使用针对单个表的left outer join。在

我有以下SQL查询:

select r1.*, r1.result as result1, r2.result as result2 
from 
    (
        select * from participation 
        where day_id = 1 
        and sport_id = 1
    )
    r1 
left join 
    (
        select * from participation
        where day_id = 3
        and sport_id = 1
    )
    r2 
on r1.participant_id = r2.participant_id

结果如下:

^{pr2}$

我现在有以下SQLAlchemy脚本:

results = db.session.query(Participation). \
    <maybe something here?>
    all()

但这会将每个结果作为自己的行返回。有人能指出我需要做些什么吗?在


Tags: andfromidsqlalchemyasresultwhereleft
0条回答
网友
1楼 · 发布于 2024-06-09 22:07:20

根据给定的信息,您只需alias a subquery两次和{a2}:

r1 = aliased(
    Participation,
    db.session.query(Participation).
        filter_by(day_id=1, sport_id=1).
        subquery())

r2 = aliased(
    Participation,
    db.session.query(Participation).
        filter_by(day_id=3, sport_id=1).
        subquery())

results = db.session.query(r1, r2.result, ...).\
    ...
    outerjoin(r2, r1.participant_id == r2.participant_id)

相关问题 更多 >