从不同的表中选择多行到一列

时间:2021-02-22 02:50:14

标签: sql postgresql sqlalchemy

我正在使用带有 sqlalchemy ORM 的 Postgresql

我正在尝试使用子查询返回查询中的类数组。

subquery1 = session.query(Coupon).filter(Coupon.date > today)
subquery2 = session.query(Coupon).filter(Coupon.rate > 5)
result = session.query(User,func.array(subquery1.label("active")),
                   func.array(subquery1.label("expensive")))

这会引发错误

<块引用>

(psycopg2.errors.SyntaxError) 子查询只能返回一列

当我只从 subquery1 和 2 session.query(Coupon.id) 查询 id 时,它工作正常并返回可以使用 result[1] 和 result[2] 访问的 id 列表,这正是我想要的,除了我需要包含所有属性的完整类,而不仅仅是属性。

当前的结果类似于

[(<User object at 0x000001E88378F2E0>, [5,3], [])]

我希望它是这样的

[(<User object at 0x000001E88378F2E0>, [<Coupon object at 0x000001E88378F2E0>,<Coupon object at 0x000001E88378F2E0>], [])]

我也喜欢用 1 个查询而不是 3 个查询来完成

CouponUser 由包含 user_id 和coupon_id 但不相关的第三个表连接

0 个答案:

没有答案