MYSQL Filtracja, szukanie dziur

0

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1