0

ユーザーが最低価格と最高価格に基づいて物件を検索できる不動産サイトに取り組んでいます。データベースには、property_price_maximum や property_price_minimumなどのフィールドがあり、どちらもINTに設定されています。

これらは、ユーザーが値を入力するための 2 つのコンボ ボックスです。

Min       Max
5 lacs    25 lacs  
25 lacs   50 lacs 
50 lacs   70 lacs
70 lacs   1.5 Cr
1.5 Cr    5 Cr

: lacs = lakh および Cr = Crore。(100 lacs = 1Crore) [情報のために追加]

intsの場合、私はこれを試しました:

select property_price_min,property_price_max from properties where (property_price_min between 25 and 55) and (property_price_max between 25 and 55);

正しく動作しますが、データベースに単位を入力していないため、1.5 のような Crore 値がある場合、これは失敗します。

データベースのフィールドを Varchar に変更し、単位を使用して同様のクエリを試行したところ、結果は正しくありませんでした (明らかに、BETWEEN は私の知る限り数値のみを比較するため)。

SELECT * from properties inner join cities on properties.city_id=cities.city_id inner join locality on properties.locality_id=locality.locality_id where (cities.city_name like '%".$citySearch."%' and locality.locality_name like '%".$localitySearch."%') and (property_price_min between '78 Lacs' and '80 Lacs');

最小価格と最大価格がユーザーの範囲内にあるプロパティを取得したい.問題は、ユーザーが 25 lacs と 1.5 Cr を選択した場合、ここの bcoz の UNITS であり、クエリが正しく返されません。

数字に関する限り、LIKE は良い選択肢ではないと思います。
あらゆる種類の有益なコメントをいただければ幸いです。

4

2 に答える 2

0

すべての値を「lacs」として保存する必要があります。100 lacs = 1 crore であるため、150 lacs として 1.5 crore を保存し、すべての計算を lacs で行う必要があります。

于 2012-06-05T08:32:01.830 に答える
0

列のデータ型をINT

選択した値がlakhまたはであるかどうかを確認できcroreます。

その場合はcrore、値に 100 を掛けてからクエリに渡します。

また

データベースでは値を 150 として 150 億ドルとして保存しcroreますが、表示ページではコンボ ボックスの値がテーブルと同じ値になりますが、表示されます。1.5 Crore

于 2012-06-05T08:32:20.593 に答える