0

2005 年から 2010 年の間に住んでいた人々とその場所の表があります。

 Person     Address          From_dt       To_dt           PersonRow
------     -------          ------        -----           ---------
1          known            2005-01-01    2010-12-31      1
2          known            2006-01-01    2007-01-01      1

ただし、人 2 に 2 つの行を追加したいので、テーブルは次のようになります。

Person     Address          From_dt       To_dt           PersonRow
------     -------          ------        -----           ---------
1          known            2005-01-01    2010-12-31      1
2          unknown          2005-01-01    2005-12-31      1
2          known            2006-01-01    2007-01-01      2
2          unknown          2007-01-02    2010-12-31      3

人物 2 の 2005 年から 2010 年の間のギャップが埋められている場合。複数の居住者がいる場合でも、ギャップを埋めなければなりません。私は正しい日付にはあまり関心がないと思います (推定された日付が他の居住者の日付からどのように取得されるかに注意してください)。私はすでにこれで助けられているので、同じ人のために)。

どうもありがとう。

4

1 に答える 1

0

行を選択してから、 while ループで次の行に沿って何かを実行できます。

$prevRow = array();
while($fetch = mysql_fetch_assoc($select) ){
    if(count($prevRow)===0){ // first round of loop it has 0 values, so nothing to match
        if($prevRow['To_dt'] !== $fetch['From_dt']){ // check the two rows' dates
            // Please note! This will not work. You will need to add 1 day to the first, or subtract 1 day from the 2nd value!
            // Insert a row "unknown" with the two values from the above if-statement
        }
    }
    $prevRow = $fetch;// save so next round we can compare
}
于 2013-06-25T13:10:32.097 に答える