Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
29.01.2002, 03:18
|
|||
|---|---|---|---|
|
|||
Профи помогите с запросом !!! |
|||
|
#18+
Есть некая таблица Customer, в которой существует некоторое целочисленное поле ID, служащее первичным ключем. В процессе работы в таблицу добавляются и удаляются записи. После удаления возникают так называемые дырки (к примеру 1,2,4,5,7,...). Необходимо одним запросом найти любую дырку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.01.2002, 07:08
|
|||
|---|---|---|---|
Профи помогите с запросом !!! |
|||
|
#18+
Вообще-то это старинный спор - естественные ключи против сурогатных, но в вашем случае IMHO если у вас поле является первичным ключом, то какая разница, какое значение оно имеет. Если же поле несет еще какую-то смысловую нагрузку(номер клиента ?), то может это все-таки не первичный ключ. В любом случае create table #temp1(f1 int) insert into #temp1 values(1) insert into #temp1 values(2) insert into #temp1 values(4) insert into #temp1 values(5) insert into #temp1 values(7) insert into #temp1 values(8 ) insert into #temp1 values(10) /*Это все "пробелы в нумерации" */ select a.f1+1 from #temp1 a left outer join #temp1 b on b.f1 = (a.f1+1) where b.f1 is null /*Это наименьший "пробел в нумерации" */ select top 1 a.f1+1 from #temp1 a left outer join #temp1 b on b.f1 = (a.f1+1) where b.f1 is null order by a.f1 drop table #temp1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.01.2002, 07:11
|
|||
|---|---|---|---|
Профи помогите с запросом !!! |
|||
|
#18+
Почитайте, если интересно http://www.sql.ru/articles/article.php?id=182 http://www.sql.ru/articles/article.php?id=362 http://www.sql.ru/articles/article.php?id=364 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2002, 10:09
|
|||
|---|---|---|---|
|
|||
Профи помогите с запросом !!! |
|||
|
#18+
Кстати, запрос каторый якобы должен вернуть все дыры, не всегда вернет их все и не всегда правильно. например, если в таблице есть одна запись со значением fl=100 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.01.2002, 10:29
|
|||
|---|---|---|---|
Профи помогите с запросом !!! |
|||
|
#18+
2nick Правильное замечание create table #temp1(f1 int) insert into #temp1 values(1) insert into #temp1 values(2) insert into #temp1 values(4) insert into #temp1 values(5) insert into #temp1 values(7) insert into #temp1 values(8 ) insert into #temp1 values(10) /*Это все "пробелы в нумерации" */ select a.f1+1 from (select f1 from #temp1 union all select 0 as f1) a left outer join #temp1 b on b.f1 = (a.f1+1) where b.f1 is null order by a.f1 /*Это наименьший "пробел в нумерации" */ select top 1 a.f1+1 from (select f1 from #temp1 union all select 0 as f1) a left outer join #temp1 b on b.f1 = (a.f1+1) where b.f1 is null order by a.f1 drop table #temp1 Хотя т.к. поле ID "целочисленное" (int ?), то теоритически нумерация могла начинаться и с отрицательного числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1824120]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 310ms |

| 0 / 0 |
