2015-05-29 54 views
1

我有兩列稱爲主要和次要,我試圖做的更大和更少的查詢。他們代表版本。因此,對於版本2.1,2在主要列中,1是次要列。我怎樣才能做這些查詢?我想避免創建一個新列。在rails中查詢兩列版本號

的問題是,如果我查詢Model.where('major > ? and minor > ?', 3, 4),我不會得到4.1或5.2,因爲未成年人是小於4

我使用軌道3.2和Ruby 1.9。此外,這些版本並不比number.number(例如2.9或4.3)複雜,所以我們假設它們都是那種風格。

+0

給一個僞代碼.. PLS –

+0

您的數據庫引擎的名字嗎? MySql? –

+0

activerecord關於postgres的查詢 –

回答

2

我認爲正確的SQL查詢將如下所示:

major > :major -- check for bigger major 
OR (major = :major AND minor > :minor) -- check within the same major 

您可以用placeholder conditions,壽使用它的ActiveRecord沒事呃,你可能應該刪除評論(--之後的部分行)。

例子:

MyProductWithVersion.where('major > :major OR (major = :major AND minor > :minor)', 
    major: 2, minor: 1) 
+0

這不是一個Rails的ActiveRecord查詢,所以是的,它需要解釋 – MCBama

+1

我喜歡它.. +1 –

+1

同樣。做得好 – MCBama

1

這不完全像你可能尋找一個特定的查詢,但一個簡單的方法來得到你想要的東西是這樣的:

Model.all.select { |m| "#{m.major}.#{m.minor}".to_f > version_number} 

其收集的所有型號,版本號大於version_number