Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Тут пролетал запрос, возвращающий


Страницы:   1 2 3

dtm ©   (2003-09-23 17:51:00) 

Уважаемые, напомните, плз. Вроде как его тут публиковал уважаемый Johnmen, но на тот момент я его скопировать не смог. Буду благодарен, если опубликуете его снова.


NickBat   (2003-09-23 18:21:00) [41]

Хороший запрос. Только сдается мне будет очень медленный. Я такую проблему решал занесением всех удаленных уникальных номеров в отдельную табличку, а потом из нее можно автоматом вытянуть номер, можно пользователю предложить. Все прозрачней и надежней.


Val   (2003-09-23 18:17:00) [42]

#8O ну и запросик. А без join, так, можно?
SELECT T.ID+1, MIN(T1.ID)-1, MIN(T1.ID)-T.ID-1
FROM TABLE1 T, TABLE1 T1
WHERE T.ID<=1000 AND T1.ID<=1000 and
T.ID<T1.ID
GROUP BY T.ID
HAVING MIN(T1.ID)-T.ID>1


kaif   (2003-09-23 18:09:00) [43]

2 Johnmen © (23.09.03 18:03) [4]
Очень хитрый запрос... Я пока не врубился. Но на декартово произведение сильно смахивает. А для ID < 100000 заработает? Или лучше не пробовать?


kaif   (2003-09-23 18:05:00) [44]

А удалять операции задним числом допускается?


Johnmen   (2003-09-23 18:03:00) [45]

==================================================================
SELECT T.ID+1, MIN(T1.ID)-1, MIN(T1.ID)-T.ID-1
FROM TABLE1 T
JOIN TABLE1 T1 ON T.ID<T1.ID
WHERE T.ID<=1000 AND T1.ID<=1000
GROUP BY T.ID
HAVING MIN(T1.ID)-T.ID>1
>Получаем промежутки в которых удалены записи.
>В первой колонке будет начальный ID промежутка, во второй - >конечный.
>В третьей количество удаленных записей в промежутке.
==================================================================


dtm   (2003-09-23 18:02:00) [46]

Кхм... Шутнички ;)

Генерятся уникальные номера записей. Потом некоторые из них удаляются. Необходимо, чтобы генератор не просто выдавал следующее значение, а выбирал минимальное из не использованных. Требуется это не для ключевого поля, а просто по условию постановки задачи - каждая операция (именно о них речь) должна иметь уникальный номер (не ключевое поле), причём "дырки" в нумерации недопускаются.


kaif   (2003-09-23 17:54:00) [47]

Дырки это как? Поясни.


Vlad   (2003-09-23 17:54:00) [48]

Странно... поиск по слову "дырки" ничего не дал :)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо