我有兩列稱爲主要和次要,我試圖做的更大和更少的查詢。他們代表版本。因此,對於版本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)複雜,所以我們假設它們都是那種風格。
我有兩列稱爲主要和次要,我試圖做的更大和更少的查詢。他們代表版本。因此,對於版本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)複雜,所以我們假設它們都是那種風格。
我認爲正確的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)
這不完全像你可能尋找一個特定的查詢,但一個簡單的方法來得到你想要的東西是這樣的:
Model.all.select { |m| "#{m.major}.#{m.minor}".to_f > version_number}
其收集的所有型號,版本號大於version_number
給一個僞代碼.. PLS –
您的數據庫引擎的名字嗎? MySql? –
activerecord關於postgres的查詢 –