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)
..

いずれかの parameters @city@pricerangeFlagまたはこの方法でこのクエリに渡された他のパラメーターがNULL値とともに渡された場合、たとえば、述語全体が true に評価されるためAND (@city IS NULL OR city = @city)、2 番目の述語に入ることなく true に評価されます。他のパラメーターと同じで、クエリに値とともに渡されたすべてのパラメーターが常に真の述語である句が評価される場合、提示されなかったように動作し、すべての行を返します。OR city = @city@city is NULLNULLWHEREWHERE 1 = 1

価格帯パラメータの場合、フラグ パラメータを使用して 2 つのパラメータを無効にしたことに注意してください@minPrice@maxPrice

于 2012-10-09T09:17:23.783 に答える