簡體   English   中英

如何從 2 列中的任何一列中排序查找結果的值? (哪些取決於)(Rails)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM