データの中断が発生した日数を選択する必要があります。mysqlは、前日の行が存在しない日付を検索します。
表形式:
id (autoincrement), user_id (int), start (datetime), end (datetime)
例データ(時間は日のみを必要とするようにして左):
1, 5, 2011-12-18, 2011-12-18
2, 5, 2011-12-17, 2011-12-17
3, 5, 2011-12-16, 2011-12-16
4, 5, 2011-12-13, 2011-12-13
をあなたは2011-間に休憩があるだろう見ることができるように表示するように簡単にそれをです12-13および2011-12-16。
日2011年12月18日を使用して、ブレークまでありますどのように多くの日数::おそらく
2011-12-18: Lowest sequential date = 2011-12-16: Total consecutive days: 3
:今、私はできると言うする必要がDATE_DIFF(2011-12-18, 2011-12-16)
だから私の問題がある
、 2011-12-16が最も低い連続日であることを選択するにはどうすればよいですか?データは特定のuser_id
のものに当てはまることを思い出してください。
ここの例のようになります。逆の場合はhttp://www.artfulsoftware.com/infotree/queries.php#72です。マックスが出finededすることができますので、左は、シーケンスにすることができ1つの日付を選択して参加する -
は、私は、これはSQLでのみ、ノーPHPコード
おかげ
MySQLだけでなく、PHP/ASP/JSPなどを使用していますか?おそらく、スクリプトレベルでのギャップを「キャッチ」するのが最も簡単でしょう。 – Oldskool
理想的にはスピードの目的でmysqlのみを使用したい - ヒープを経由して行のヒープを調べるだけで、nullを見つけることは自分のデータにとって効率的ではない – Ashley