我正在连接两个表,并希望从一个列中选择所有列,而从另一个列中选择一些列。我觉得我很接近,但它并没有完全恢复我想要的东西。我有一个广告表和一张优惠券表,在这里他们有一对一的关系。
我在db模型上调用了一个查询,如下所示:
result = Advertisement.query.join(Coupon,
Advertisement.id==Coupon.id).filter(Advertisement.date==Coupon.date,
Advertisement.id==12345).add_columns(Coupon.discount,
Coupon.expiry_date)
我想要回来的是广告中的所有列和来自优惠券的两个列。我的理解是add_columns会这样做,但我只从优惠券中取回两个,而不是广告。如果我删除了add_columns,我会从广告中取回所有内容,但是没有来自优惠券。
我是否必须在类中声明表关系?我知道查询在sql中应该是什么样的,但我在这里有点亏。如果我提供的信息不够清楚,请告诉我,我可以尝试进一步详细说明,谢谢。
答案 0 :(得分:0)
您可以按照以下方式执行此操作:
result = session.query(Advertisement, Coupon.discount, Coupon.expiry_date).filter(
Advertisement.id==Coupon.id,
Advertisement.date==Coupon.date,
Advertisement.id==12345
)