无法创建Sqlalchemy查询

时间:2015-03-31 00:22:35

标签: postgresql sqlalchemy database-schema flask-sqlalchemy

我有4张桌子

  

活动

  1. Event_ID
  2. Event_Name
  3. Seller_ID
  4.   

    拍卖

    1. Auction_ID
    2. EVENT_ID
    3.   

      竞价

      1. Bidding_ID
      2. Auction_ID
      3. Buyer_ID
      4. CREATION_DATE
      5.   

        订单

        1. Order_ID
        2. EVENT_ID
        3. Buyer_ID
        4. CREATION_DATE
        5. 现在在此架构中

          • 订单和拍卖取决于活动

          • 出价取决于拍卖

          • 活动可以有多个订单和拍卖,拍卖可以有多个出价

          我想创建一个查询,以便选择Events具有Orders Buyer_ID OR Auctions Biddings的所有Buyer_ID特别是Biddings.Creation_Date。得到这个将需要几个连接。这不是我想的问题。问题是我必须按Orders.Creation_Date和{{1}}对最终结果进行排序。

          换句话说,我只想获取买方获得订单的事件或买方提交投标的事件。最终结果应按他执行这些操作的日期排序。

          我正在使用分页。我不想获取所有记录并在以后以编程方式对它们进行排序。 此外,我愿意修改我的架构,如果更改它可以解决这个问题。

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中使用它。