我有一個相當複雜的產品/可用性問題,我無法解決,而且我也沒有在任何地方發現任何類似的問題。SQL查詢:檢索重疊的已存在日期期限
表 「產品」:
- id
- name
表 「期」:
- id
- start (Date)
- end (Date)
- price (int)
- product_id
一個產品可以在我的情況下,被關聯到很多期,即使在相同的日期範圍(開始/結束)。
實例:一個產品 「甲」
期間1)開始:2013-01-01 || 結束:2013-01-07 || 價格:200
週期2)啓動:2013年1月7日|| 結束:2013-01-14 || 價格:250
週期3)開始:2013年1月7日|| 結束:2013-01-10 || 價格:100 ##包含在期間(2)上述
週期4)開始:2013年1月10日|| 結束:2013-01-14 || 價格:200 ##包含在期間(2)上述
週期5)開始:2013年1月11日|| 結束:2013-01-14 || 價格:150 ##包括在上述期間(2)
我需要做的是檢索給定日期範圍內的所有產品及其價格。
用戶會搜索什麼,我要怎麼獲得:
爲2013-01-01和2013年1月7日之間的產品搜索:它應該返回產品一個和200(第一期)的價格。
2013-01- 和2013年1月7日之間的搜索:它應該不收益產品一個,因爲該期限內沒有包含完整(2013-01-01天缺失)。
在2013-01-07和2013-01-14(最複雜的情況)之間搜索:它應該返回產品A,「2」可能期限:(2)和(3 + 4)。但是,它不應該返回期間(3 + 5),因爲2013-01-10天有一個「漏洞」。
我也想能夠找回最低價格。在上述第三種情況下,它應該返回250,因爲(2)價格低於(3 + 4)價格。
任何幫助將是非常apreciated。
你是否曾經考慮過兩種以上可能結合的範圍? – 2013-03-21 17:23:15
是的,2013/01/01-2013/01/02 + 2013/01/02-2013/01/03 + 2013/01/03-2013/01/07等應該與2013/01/01- 2013年1月7日 – elwood 2013-03-21 17:45:41