非常に複雑な製品/可用性の問題が発生しましたが、解決できず、同様の質問はどこにも見つかりませんでした。
表「商品」:
- id
- name
テーブル「期間」:
- id
- start (Date)
- end (Date)
- price (int)
- product_id
私の場合、同じ日付範囲(開始/終了)内であっても、製品を多くの期間に関連付けることができます。
例:商品「A」の場合
期間1)開始:2013-01-01 || 終了:2013-01-07 || 価格:200
期間2)開始:2013-01-07 || 終了:2013-01-14 || 価格:250
期間3)開始:2013-01-07 || 終了:2013-01-10 || 価格:100 ##上記の期間(2)に含まれる
期間4)開始:2013-01-10 || 終了:2013-01-14 || 価格:200 ##上記の期間(2)に含まれる
期間5)開始:2013-01-11 || 終了:2013-01-14 || 価格:150 ##上記の期間(2)に含まれる
私がする必要があるのは、特定の日付範囲のすべての製品とその価格を取得することです。
ユーザーが検索するもの、および取得したいもの:
2013-01-01から2013-01-07までの製品を検索します。製品Aと価格200(期間1)が返されます。
2013-01-02と2013-01-07の間の検索:期間が完全に含まれていないため(2013-01-01日が欠落しているため)、製品Aは返されません。
2013-01-07と2013-01-14の間の検索(最も複雑なケース):「2」の可能な期間((2)と(3 + 4))を持つ製品Aを返す必要があります。ただし、2013-01-10日には「穴」があるため、期間(3 + 5)を返すことはできません。
また、最低価格を取得できるようにしたいと思います。上記の3番目のケースでは、(2)価格が(3 + 4)価格よりも低いため、250を返す必要があります。
どんな助けでも非常に高く評価されるでしょう。