Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: Панург
Если в таблице не было ранее пропусков ID (или это не важно), то данный запрос покажет все недостающие номера

SELECT qsel2.d
FROM   (SELECT qsel.d
        FROM   (SELECT Clng(( D4.digit & D3.digit & D2.digit & D1.digit & D0.digit ) + 1) AS d
                        FROM   Digits AS D0,
                                      Digits AS D1,
                                      Digits AS D2,
                                      Digits AS D3,
                                      Digits AS D4) AS qsel
        WHERE  qsel.d <= (SELECT Max(tbl.ID)
                          FROM   tbl)) AS qsel2
       LEFT JOIN tbl
              ON qsel2.d = tbl.ID
WHERE  tbl.ID Is Null;

В запросе используется запрос на объединение Digits (можно сделать таблицу вместо запроса), взятый из http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=535505&msg=5414410

SELECT TOP 1 0 AS digit FROM MSysObjects
UNION ALL 
SELECT TOP 1 1 FROM MSysObjects
UNION ALL 
SELECT TOP 1 2 FROM MSysObjects
UNION ALL 
SELECT TOP 1 3 FROM MSysObjects
UNION ALL 
SELECT TOP 1 4 FROM MSysObjects
UNION ALL 
SELECT TOP 1 5 FROM MSysObjects
UNION ALL 
SELECT TOP 1 6 FROM MSysObjects
UNION ALL 
SELECT TOP 1 7 FROM MSysObjects
UNION ALL 
SELECT TOP 1 8 FROM MSysObjects
UNION ALL 
SELECT TOP 1 9 FROM MSysObjects;

ЗЫ. Запрос расчитан на то, что максимальное значение ID не превышает 100 000.


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.