2017-10-12 15 views
-4

コードの試行が不十分であることをご了承ください。MySQLのクエリの日付範囲 - 一般的な期間を見つける

私はこの周りに頭を上げることはできません - それが実現可能かどうかわかりません。

私は '日付スロット'でいっぱいのテーブルを持っています。これらは個人によって予約することができます。

タイムスロットテーブルは次のようになります。これらの行の

ID | Price | Available_from | Available_ to  
------------------------------------ 
1 | 20.00 | 2017-10-01 | 2018-01-01 
2 | 20.00 | 2017-11-01 | 2017-12-07 
3 | 20.00 | 2017-10-31 | 2018-01-31 
4 | 20.00 | 2017-10-22 | 2017-11-21  
------------------------------------ 

、4つのすべての結果は、2017年11月1日> 2017年11月21日

入手可能である一般的な日付範囲があります

データベースを照会して1)すべての結果に共通の範囲があり、2)ある場合は日付範囲を取得するかどうかを確認したいと思います。

助けてください!

SELECT MAX(Available_from) as MatchFrom, 
     MIN(Available_to) as MatchTo 
FROM Temporary.test 
WHERE 
    (SELECT MAX(Available_from) FROM Temporary.test) 
    <=(SELECT MIN(Available_to) FROM Temporary.test) 

重複範囲が存在しない場合には、NULLを返します。

は、私はこれが仕事だと思うあなた

+0

あなた自身のサンプルデータを見るだけであれば、希望の結果が最大Available_from日付と使用可能な最小Available_から構成されていることが明らかになります。 (それらを得るためには、基本アイデアのために "mysql groupwise maximum"を調べてください。)もちろん、既存の間隔に「穴」があるかもしれませんが、それほど単純ではありません。ケース。ですから、あなたの次のステップは、この状況における「エッジケース」がどのようなものになるのか、それらが必要とする具体的な取り扱いについて考えることです。 – CBroe

+0

http://salman-w.blogspot.ca/2012/06/sql-query-overlapping-date-ranges.htmlをご覧ください。また、SQLの日付範囲の交差のためのStackOverflowを調べると、いくつかの詳細な回答が見つかります。 Ex https://stackoverflow.com/questions/4490553/detect-overlapping-date-ranges-from-the-same-table – Nic3500

+0

ありがとう@CBroe、そのようにレイアウトし、いくつかの正気を追加しました - はい、それは遠くに思われる簡単です!ありがとう、私は今それを探検します。 – user3061608

答えて

1

ありがとうございます。

関連する問題