我有4张桌子
活动
拍卖
竞价
订单
现在在此架构中
订单和拍卖取决于活动
出价取决于拍卖
活动可以有多个订单和拍卖,拍卖可以有多个出价
我想创建一个查询,以便选择Events
具有Orders
Buyer_ID
OR
Auctions
Biddings
的所有Buyer_ID
特别是Biddings.Creation_Date
。得到这个将需要几个连接。这不是我想的问题。问题是我必须按Orders.Creation_Date
和{{1}}对最终结果进行排序。
换句话说,我只想获取买方获得订单的事件或买方提交投标的事件。最终结果应按他执行这些操作的日期排序。
我正在使用分页。我不想获取所有记录并在以后以编程方式对它们进行排序。 此外,我愿意修改我的架构,如果更改它可以解决这个问题。
答案 0 :(得分:0)
我通过以下查询成功实现了这一目标。
bid_event =(db.session.query(Event, Bidding.created_on.label(' created_on'))\。 加入(拍卖)。\ 加入(招标)。\ 过滤器(Bidding.seller_id == 2)\ )
order_event =(db.session.query(Event, Order.created_on.label(' created_on'))\。 加入(订单)。\ 过滤器(Order.seller_id == 2)\ )
records = bid_event.union(order_event).order_by(' created_on')。all()
这还有一个小问题。它返回重复记录。我希望通过
获得不同的记录EVENT_ID
有人建议使用group_by
,但我无法在带有联合子句的sqlalchemy中使用它。