我正在使用 SQLalchemy 查询两个表,我想在查询中使用独特的功能,以获得一组唯一的客户 ID
我有以下查询:
orders[n] = DBSession.query(Order).\
join(Customer).\
filter(Order.oh_reqdate == date_q).\
filter(Order.vehicle_id == vehicle.id).\
order_by(Customer.id).\
distinct(Customer.id).\
order_by(asc(Order.position)).all()
如果您可以看到这里发生了什么,我正在查询订单表以获取特定日期的所有订单,对于特定车辆,这很好用。但是,有些客户可能在一个日期有多个订单。所以我试图过滤结果,只列出每个客户一次。这工作正常,但是为了做到这一点,我必须首先按具有 distinct() 函数的列对结果进行排序。我可以将第二个 order_by 添加到我希望结果排序的列中,而不会导致语法错误。但它会被忽略,结果只是由 Customer.id 排序。
由于外键的设置方式,我需要对 Order 表执行查询并加入客户(而不是反过来)。
我想在一个查询中完成吗?或者我是否需要重新循环我的结果才能以正确的顺序获取我想要的数据?