これらのテーブルがあるとしましょう:
[ properties ]
id (INT, PK)
name (VARCHAR)
[ properties_prices ]
id (INT, PK)
property_id (INT, FK)
date_begin (DATE)
date_end (DATE)
price_per_day (DECIMAL)
price_per_week (DECIMAL)
price_per_month (DECIMAL)
私の訪問者は次のような検索を実行します: 5 月 1 日から 12 月 31 日までの期間で、1 日あたりの価格 (price_per_day フィールド) が 10 から 100 の間である最初の 10 (ページネーション) プロパティをリストします
私はそれが巨大なクエリであることを知っており、結果をページ分割する必要があるため、すべての計算を実行し、1 つのクエリでログインする必要があります...それが私がここにいる理由です! :)
問題に関する質問
ギャップがある場合、それは許容可能なプロパティでしょうか?
隙間はありません。可能な日付はすべてデータベースにあります。
価格が 10 から 100 の間のサップ期間とそうでない期間がある場合、その物件を取得しますか?
完璧な世界では、いいえ...すべての変動/期間を考慮して、その期間のそのタイプの価格の「合計」を計算する必要があります。
また、「最初の10」とは何ですか?それらはどのように注文されますか?最安値優先?しかし、複数の価格が存在する可能性があります。
これは、ページごとに 10 件の結果を表示するページネーションの例にすぎません... キーワードなどを追加する FULLTEXT 検索で並べ替えることができます... 前述したように、これはかなり大きなクエリです。