かなり複雑なクエリがあり、助けが必要です。
基本的に、私のテーブルには 4 つのフィールドがあります。
Start Date,
End Date,
Item,
Type
日数も取得する必要があります
それらを正しくグループ化するには、各行を見て、開始日の日付が連続しているかどうか、それらがグループ化されているかどうか、そうでない場合は別のグループに入るかどうかを確認する必要があります
したがって、次の日付がデータベースにあったとします。
2013-10-23
2013-10-24
2013-10-28
2013-10-29
次に、2行を返す必要があります
2(number of days), 2013-10-23 (startdate) ,2013-10-24 (last consecutive date) , Item, Type
2,2013-10-28,2013-10-29,Item,Type
次に、物事をより複雑なレベルに引き上げるために、アイテムとタイプが同じであることに基づいてグループ化する必要があります
それが次のデータです(StartDate、Item、Type)
2013-10-23,ABC,EFG
2013-10-24,XYZ,WXY
2013-10-28,ABC,EFG
2013-10-29,ABC,EFG
この場合、最初の 2 つはグループ化されません。これは、日付が連続していても、Item や Type が互いに同じではないためです。
ただし、日付が連続しており、Item と Type が互いに同じであるため、最後の 2 つは一緒にグループ化され、必要な結果が得られます。
number of days startdate last consecutive date Item Type
1 2013-10-23 2013-10-23 ABC EFG
1 2013-10-24 2013-10-24 XYZ WXY
2 2013-10-28 2013-10-29 ABC EFG
これを MySQL で実行しようとしています。PHP を使用してループできることはわかっていますが、可能であれば MySQL で実行することをお勧めします。
これは、いくつかのデータを含む SQLFiddle です。http://sqlfiddle.com/#!2/63383/1/0