我将使用SQLalchemy查询两个表,希望在查询中使用distinct特性以获得唯一的客户ID集合。
以下是我的查询语句:
如果你能看到这里正在发生什么,我正在查询订单表格,以获取特定日期和车辆的所有订单,这很好用。但是,一些客户可能在同一天下了多个订单。因此,我试图将结果过滤为仅列出每个客户一次。这很好用,但是为了做到这一点,我必须首先按具有distinct()函数的列对结果进行排序。我可以添加第二个order_by到我想要的结果排序的列,而不会导致语法错误。但它被忽略了,结果仅按Customer.id排序。
由于外键的设置方式,我需要在Order表上执行查询并加入到客户端(而不是相反)。
我想做的事情是否可能在一个查询中完成?还是我需要重新循环我的结果以获得我想要的正确顺序的数据?
以下是我的查询语句:
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表上执行查询并加入到客户端(而不是相反)。
我想做的事情是否可能在一个查询中完成?还是我需要重新循环我的结果以获得我想要的正确顺序的数据?