Найти удаленные номера

Стас

Троечник
Найти удаленные номера

Есть база на MSSQL. В ней таблица с полем id (тип - int, auto_increment). Нужно выбрать те значения id, которые были удалены. То есть, в этой таблице значения id по порядку такие:
id
==
1
2
7
8

Значит, нужно выдать номера 3,4,5,6 . Я это сделал запрос выбора всех id с сортировкой по возрастанию и по порядку проходился по этим записям. Если внутренний счетчик не совпадает с полем id, то я его вывожу на экран и увеличиваю на 1:
PHP:
for($i = 1; $i<=mssql_rows_affected($result); $i++) {
$ara = mssql_fetch_array($result);
while ($i!=$ara[0]){
echo $i."<br>";
$i++;
}//end while
}//end for
Все, вроде, работает. Но что-то мне подсказывает, что это все- туфта, что можно было бы обойтись одним запросом к MSSQL. Может быть, я прав? Подскажите...
 

Crazy

Developer
1. Делаешь таблицу (roller) из 10 записей с единственным полем n, куда заносишь числа 1-10.
2. Связываешь со своей таблицей по left join и накладываешь фильтр "where id is null".
3. Если у тебя более 10 записей, то используй декартово произведение, "перемножая" roller на саму себя (hint: select (a.n-1)*10+b.n as n from roller a, roller b)
 
Сверху