假设我有一个映射的类User
,映射到同名的表,以及他的年龄的列“年龄”。我现在对以下问题感兴趣:
在我的申请过程中,出现了两个查询:
q1 = session.query(User).filter(lots of conditions)
q2 = session.query(User).filter(lots of other conditions)
我现在想在他们年龄相同的情况下将 q2 “加入”到 q1 上。但我不知道这会如何工作。我尝试了以下但没有成功:
q1.join(q2.subquery(), q1.age==q2.age) # the query doesn't hold the columns of the queried class
q1.join(Age).join(q2.subquery()) # Works only if age is a relationship with mapped class Age
我最接近的电话是这样的:
a1 = aliased(User)
a2 = aliased(User)
q1 = session.query(a1)
q2 = session.query(a2)
s = q2.subquery()
q1.join(s, a1.age==a2.age).all()
>>> sqlalchemy.exc.OperationalError: (OperationalError) no such column: user_2.age 'SELECT user_1.id AS user_1_id, user_1.name AS user_1_name, user_1.age AS user_1_age \nFROM user AS user_1 JOIN (SELECT user_2.id AS id, user_2.name AS name, user_2.age AS age \nFROM user AS user_2) AS anon_1 ON user_1.age = user_2.age' ()
关于如何进行此运行的任何想法?