0

我有搜索要求,即搜索出租房屋的选项。

city,price range,numberOfRooms是标准。

如果用户没有提及任何细节并单击提交,我们必须显示所有结果。

例如,如果用户提到的价格范围是 5000 到 10000,那么它必须给出考虑所有城市的结果,所有可能的 1bhk、2bhk、3bhk ......

如何编写涵盖所有可能性的单个查询

我心里有这个想法。。

让我们只考虑城市和价格是选项,没有其他选项可以更好地解释。

我创建了一个名为 city 的表

city

option    cityname
  1        delhi
  2        hyderabad
  3        bangalore
  4        delhi
  4        hyderabad
  4        bangalore

SELECT *
FROM rental
WHERE city IN (select cityname from city where option=#{option_value}) and price>=#{minPrice} and price<=#{maxPrice};

我们需要创建表格城市吗?

是否有任何发送列表中的值并根据选项这些列表值应该出现。

这是正确的吗?

4

1 回答 1

1

这是另一种方法,通过使用可选参数,例如:

SELECT * 
FROM rental 
WHERE 1 = 1
AND (@city IS NULL OR city = @city)
AND (@PricerangeFlag IS NULL OR price BETWEEN @minPrice AND @maxPrice)
..

如果以这种方式传递给此查询的任何参数或任何其他参数与一个值一起传递,@city则例如,整个谓词将被评估为真,而无需进入第二个谓词,因为评估为真。与其他参数相同,如果所有参数都与值一起传递给查询,则该子句将被评估为始终为真谓词的子句,因为它的行为就像它没有被呈现并返回所有行。@pricerangeFlagNULLAND (@city IS NULL OR city = @city)OR city = @city@city is NULLNULLWHEREWHERE 1 = 1

请注意,在价格范围参数的情况下,我使用了一个标志参数来禁用这两个参数@minPrice@maxPrice

于 2012-10-09T09:17:23.783 回答