0

在房地产网站上工作,用户可以根据最低和最高价格搜索房产。现在在数据库中,我有诸如property_price_maximum 和 property_price_minimum之类的字段,它们都设置为INT

这是供用户输入值的两个组合框。

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 = 十万,Cr = 千万。(100 lacs = 1Crore)[添加信息]

对于整数我试过这个:

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');

我想获得最低和最高价格在用户范围之间的属性。问题是这里的单位 bcoz 如果用户选择 25 lacs 和 1.5 Cr,那么我的查询将不会返回正确。

就数字而言,我认为 LIKE 不是一个好的选择。
任何有帮助的评论将不胜感激。

4

2 回答 2

0

您应该将所有值存储为“lacs”。由于 100 lacs = 1 千万,您应该将 1.5 千万存储为 150 lacs,并以 lacs 进行所有计算。

于 2012-06-05T08:32:01.830 回答
0

设列的数据类型为INT

您可以检查所选值是否为lakhcrore

如果是,crore则将该值乘以 100,然后将其传递给查询。

或者

在数据库中将crore值保存为 1.5 千万的 150 但在显示页面中组合框的值与表中的值相同但显示1.5 Crore

于 2012-06-05T08:32:20.593 回答