[英]Column order of results from rails ActiveRecord find_by_sql call
[英]How to order find results on value from either of 2 columns? (which ones depends) (Rails)
完全菜鳥問題。 將不勝感激任何指針。
我有一個 rails model,其中包含一個概念的 2 個可能值,例如距離(來自 GPS 文件的值和一個編輯值)。 可以在任一列(僅文件或僅手動)中有一個值,也可以在兩個列中都有一個值(在這種情況下手動覆蓋文件),或兩者都不存在:
distance-file distance-edited
9
10 11
12
在我的應用程序的幾個地方,我想查找並按距離對結果進行排序,其中文件與編輯的關系僅在於我想在存在時使用距離編輯。
因為我在很多地方都做了這種排序,理想情況下我想集中邏輯來選擇在某個地方使用哪個距離值,這樣在每個發現中我都可以簡單地按距離排序。
這樣做的正確方法是什么?
謝謝!
奧利維亞
因此,重申一下,您想在存在 distance-edited 時將其用作主要度量,而在不存在時將 distance-file 用作主要度量? 你需要這樣的東西:
ORDER BY COALESCE(distance-edited, distance-file)
Coalesce 的意思是“使用此列表中第一個非 NULL 的值”,並且是特定於 MS SQL 的 function。對於其他數據庫,您需要使用該系統支持的等效語句。
如果兩者都是 NULL 怎么辦? 你想把它放在列表的末尾還是開頭? 您可以通過在合並列表中添加第三個值來為我們提供“默認”值:
ORDER BY COALESCE(distance-edited, distance-file, 100)
我認為您應該能夠簡單地將:order => 'distance-edited, distance-file'
作為條件傳遞給您的find
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.