5

日付範囲を 1 つのデータベース レコード (配列要素) にマージする最良の方法を見つけようとしています。

これは私が持っているデータです:

  Array
(
    [0] => Array
        (
            [id] => 18298
            [start_date] => 2011-07-09
            [end_date] => 2011-10-01
        )

    [1] => Array
        (
            [id] => 18297
            [start_date] => 2011-06-01
            [end_date] => 2011-06-30
        )

    [2] => Array
        (
            [id] => 17113
            [start_date] => 2011-03-31
            [end_date] => 2011-05-31
        )

    [3] => Array
        (
            [id] => 20555
            [start_date] => 2011-01-03
            [end_date] => 2011-03-31
        )
)

それらを結合すると、配列 (またはデータベース) は次のようになります。

Array
(
    [0] => Array
        (
            [merged_ids] => 18298
            [start_date] => 2011-07-09
            [end_date] => 2011-10-01
        )

    [1] => Array
        (
            [merged_ids] => 18297, 17113, 20555
            [start_date] => 2011-01-03
            [end_date] => 2011-06-30
        )
)

すべての要素/範囲を通過してそれらを組み合わせるアルゴリズムはありますか? データベース (MYSQL) とコーディング (PHP) のどちらを使用する方が良い/簡単ですか?

どんなアドバイスでも大歓迎です。

ありがとう!

更新:申し訳ありませんが、十分な情報を提供できませんでした: 連続して重複する日付範囲を統合する必要があります。

4

4 に答える 4

13

開始日順に並べ替えます。

次に、次の項目の開始日が現在の終了日よりも前か直後かを繰り返して確認します。そうであれば、次のものを現在のものにマージします。その後、続行します。

于 2011-02-11T18:20:38.717 に答える