在房地产网站上工作,用户可以根据最低和最高价格搜索房产。 现在在数据库中,我有 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不是一个好选择 任何有用的评论将不胜感激。
答案 0 :(得分:0)
您应将所有值存储为“lacs”。由于100万卢比= 1亿卢比,你应该储存1.5千克为150卢比,并以懒人的方式进行所有计算。
答案 1 :(得分:0)
让列的数据类型为INT
您可以检查所选值是lakh
还是crore
。
如果是crore
,则将该值乘以100,然后将其传递给查询。
或强>
在数据库中,将crore
值保存为150(1.5千克),但在显示页面中,组合框的值与表中的值相同,但显示为1.5 Crore