比较mysql中的价格范围

时间:2012-06-05 08:26:18

标签: mysql database

在房地产网站上工作,用户可以根据最低和最高价格搜索房产。 现在在数据库中,我有 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 = lakh和Cr = Crore。 (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);

正确工作,但当有Crore值(如1.5)时,由于我没有输入数据库中的 Units ,因此失败了。

当我将数据库中的字段更改为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那么bits的UNITS则我的查询不会返回正确。

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

2 个答案:

答案 0 :(得分:0)

您应将所有值存储为“lacs”。由于100万卢比= 1亿卢比,你应该储存1.5千克为150卢比,并以懒人的方式进行所有计算。

答案 1 :(得分:0)

让列的数据类型为INT

您可以检查所选值是lakh还是crore

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

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