我查詢了兩條表與SQLAlchemy的,我想用不同的功能上我的查詢,得到了一套獨特的客戶ID的SQLAlchemy的不同,ORDER_BY不同的列
我有以下查詢:
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表上執行我的查詢並加入到客戶中(而不是其他方式)。
我想在一個查詢中做什麼?或者我是否需要重新循環我的結果才能以正確的順序獲取我想要的數據?
啊啊謝謝,這是一個更好的方法。我加入了s.qeury order_by(Order.position).all(),並且解決了這個問題,使用兩個查詢要好得多 – crooksey