Są takie dane w tabeli:
1
2
4
5
8
10
Dane są uporządkowane narastająco. Jak znaleŹć brakujące liczby, tak żeby otrzymać taki wynik:
3
6
7
9
0
0
Moze incrementowac jakas zmienna i porownywac z istniejacymi danymi w tabeli.
0
tak to teraz robie. Pobieram min i max z tabeli, tworze drugą tabelę pomocniczą gdzie wypełniam ją danymi robiąc INC(Min) az do wielkości Max, a następnie porównanie 2 tabel. Niestety INC działa wolno, jest coś lepszego?
0
a jak to robisz? czyzbys po kazdym INC wykonywal kolejne zapytanie? :D
ewentualnie masz tak ogromna ta baze, ze tablica bajtow z numerami tych rekordow sie nie miesci w RAM, ze az parser PHP musi korzystac z pamieci SWAP :D
dobra - znaj dobre serce - podam rozwiazanie ;)
$q = mysql_query('SELECT id FROM ... ORDER BY id ASC');
$i = false;
$braki = array();
while ($r = mysql_fetch_array($q))
{
if ($i === false) { $i = $r['id']; }
while ($i != $r['id'])
{
$braki[$i] = true;
$i++;
}
$i++;
}
kod pisany z glowy, zlozonosc liniowa, a przede wszystkim tylko jedno proste zapytanie