Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Это не про внутренние ID значения в базе данных, а внешние. Немного искусственный пример:
- компания заключает договора с клиентами - договора имеют целочисленный номер - желательно экономить номера - допускается повторно использовать незадействованные номера ("дырки", далее Д) Вот задача и состоит в поиске этих дырок в БД. Итак, что есть Д? Это последовательность занятых номеров (хотя бы один занятый номер), а за ним - последовательность незанятых, условленной минимальной длины (ну, потому-что 1-2 незанятых номера - это у нас норма, а >10 это выделенный диапазон номеров, но по разным причинам - неиспользованный) - такая последовательность далее названа "ступенька вниз". Далее, как определить наличие Д: это такая серия: 1 задействованный номер + несколько незадействованых. Оказалось, что работает технология из электроники - "цифровой фильтр с линией задержки (далее ЛЗ)" - т.е. мы (при помощи ЛЗ приводим нужные номера в одну точку, и суммируем эти приведенные номера на предмет события, что должно быть: 1 присутстсвующий номер, AND столько-то отсутствующих. ЛЗ в данном случае - это всего лишь оператор "номер=номер+-1". Эти операции ЛЗ и суммирования оказалось можно выполнить в SQL-SELECT операторе, в его WHERE (т.к. WHERE применяется к каждой записи таблицы) Вот получился код, как ни странно, он ищет Д, даже правильно (ну, у нас есть бумажный журнал Д, вот она его повторят, и правильно ищет границы занятости номеров в выделенных агентам диапазонах номеров)... далее см. комментарии в коде... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
|
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Равиль, не вьехал, что значит "я не понимаю в SELECT"-х, Ты это должен прекратить, и наоборот, говорить, что мол, ваши селекты д.б. более правильные, вот таие типа ...
Я предложл полуматематическое "решение", я не смог санализировать корректность механики счета дырок, хотел услышать мнение... хммм... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
Когда-то тестили скорость работы селектов с аналогичными решениями без них - селекты частенько проигрывают по времени исполнения. Думаю у сторонников селектов есть шанс опровергнуть это утверждение
Значит решил "поверить музой алгебру" - тебе это удалось ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Равиль, рад тебя видеть, я блин, блин... "алгебры множеств Ли", ты не представялешь, как это интересно !Все интересно, что и пытаюсь показать... )))
|
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
Я тоже рад ! Олег, чтоб заценить твой подход нужно потрогать практический работающий пример. ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Ну, я стеснняюсь, инда ... Про потенциалы?
|
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
а я в электронике без потенции ... ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
я тоже, хз, хочулия, могулия, но не важно! Электроники и без нас выживут )))
|
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Пытался найти, что-то приличсчисвующеке слуявай, Равиль, привет )))
|
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Это как www.youtube.com
все5 не так "http://www.youtube.com/watch?v=Qm9gUNbSqlk" |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
Олег приезжай в Екатеринбург в мае!
------------------ Тяжело согнать курсором муху с монитора ... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
[color=Red][/color]ВсетакиЮ нужно лично общнуться, вот не вижу продолжненияч п-разговора.
Оказалось, в аскен, не работаюи интуитивные и-ы"...Как же достучаться до Равиля... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Приехать не реально, и смысла не вижу, (все умирает, а в процессе смерти - нет смысла мотаться по стране)
|
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Боянистый вопрос...
------------------ WBR, Igor |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
of63 Автор Сообщений: 25161 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Блин, Игорь, какого года баян?
Я тебе вобще скажу - ты убиваешь положительное самомнение слушателей тебя... Ты хоть под..и немного Вобще - от отсутсвия самоценности - убиться можно... Тебе сколько лет? Исправлено 2 раз(а). Последнее : of63, 22.12.13 22:50 |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
Игорь, у меня твой запрос выдает нечто ... или так задумано ))
------------------ Тяжело согнать курсором муху с монитора ... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
Игорь, извиняюсь - сейчас глянул еще - запрос правильно отрабатывает - не обратил внимание, что у тебя в условии стоит знак "меньше" (< m.lnMaxInterval), из контекста задачи ожидалось условие "больше". ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
У меня он выдаёт не "нечто", а курсор с 2 записями. Работает, естественно, только в VFP9, т.к. тут сплошные подзапросы во FROM. В старых версиях то же самое нужно делать отдельными запросами (5 шт. выйдет - ну или 3 запроса и 2 UPDATE для прописывания "номеров строк" - т.к. RECNO() в многотабличном запросе не работает).
start end 3 3 7 8Что соответствует поставленному условию поиска пропусков номеров. Интервал "дырок" 13-119 не попадает т.к. он "слишком большой". ------------------ WBR, Igor |
Re: Поиск "дырок" в (автоинкрементных) номерах ID | |
---|---|
Равиль Сообщений: 6547 Откуда: Уфа Дата регистрации: 01.08.2003 |
Да, это я успел заметить, см. выше. Интересно было сравнить скорость - накидал тест - у меня запрос работает в 1,4 - 1,5 раза медленнее скана: ------------------ Тяжело согнать курсором муху с монитора ... Исправлено 1 раз(а). Последнее : Равиль, 23.12.13 16:31 |
© 2000-2024 Fox Club  |