Iモデル持っているLodging
属性を持つprice_range
この属性は、この形式のデータが含まれています89;149
(文字列形式では)これは今149から89の間の価格帯であると言う私は、これらの検索したいlodgings
間の価格帯を持っているが100-200
、私は、単一の行の問い合わせでこれをやりたいです好きなようにLodging.where(...
私のクエリを解決できる方法はありますか?
ありがとう!
申し訳ありませんが、それは悪いデータベース設計です。2つのdbフィールド(low_price、high_priceなど)を使用するように実装を移行することをお勧めします。次に、単一のクエリで検索を実行できます。
Lodging.where(["low_pric >= ?" AND high_price <= ?], 100, 200)
以下はMySQLで動作する可能性がありますが、私にはわかりません。現時点ではテストできません。
Lodging.
where(["(CONVERT(SUBSTRING(price_range, 1, LOCATE(';',price_range) -1) USING INTEGER) >= :low_price AND CONVERT(SUBSTRING(price_range, 1, LOCATE(';',price_range) -1) USING INTEGER) <= :low_price) OR (CONVERT(SUBSTRING(price_range, LOCATE(';',price_range) + 1) USING INTEGER) >= :high_price AND CONVERT(SUBSTRING(price_range, LOCATE(';',price_range) + 1) USING INTEGER) <= :high_price)", {:low_price => 100, :high_price => 200}])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加