2011-09-13 13 views
-2

最終的にレコードの削除によって行が失われるテーブルがあります。MySQLで欠落している行を解決する

どのようにしてそのテーブルの行が欠落していないかを確認して、この行がなくなった行をPHPで埋めることができます。

私は順番に不足している項目を見つけるための一つの方法は、COUNT(*)とmax(IDを比較することである

乾杯

+0

質問を明確にする必要があります。 – simshaun

+0

なぜあなたは欠けている行を埋める必要がありますか? – Problematic

+3

あなたのコードを投稿して、私がこのたびにニッケルを持っていたかどうかを調べることができます。 – Drewdin

答えて

2

を使用する正しいループアウトその使用ルーピングしかし私はちょうどカントの仕事を推測)。 これは、不足しているものがどれくらいあるかを知ってから、バイナリ検索のようにチェックする範囲を含めて開始する必要があります。

代替方法は、idによって順序付けられた行を反復処理し、シーケンスがジャンプするときに挿入をトリガーします。

$lastId = 0; 
foreach ($rows as $row) 
{ 
    if ($lastId + 1 != $row['id']) { 
     fillInRows($lastId + 1, $row['id'] -1); 
    } 
    $lastId = $row['id']; 
} 

function fillInRows($min, $max) 
{ 
    for ($i = $min; $i <= $max; $i++) { 
     // exercise left for the reader 
    } 
} 
+0

ありがとう、これはまさに私が探していたものです - どうやら問題は司会者の思考ほど漠然としていません。 –

関連する問題