Вниз
Скачать: CL | DM;

Певый свободный номер в поле таблицы.   Найти похожие ветки 

← →
FormCoord   (2003-06-27 17:04) [0]

Вот собственно и весь вопрос. Дополнение: таблица большая - 76000 записей, решение хотелось бы в SQL, если это возможно...
Спасибо.


← →
NDeu ©   (2003-06-27 17:13) [1]


> Певый свободный номер в поле таблицы


> решение хотелось бы в SQL

Нельзя


← →
Serginio   (2003-06-27 17:18) [2]

Есть два решения данной проблемы выборка всех номеров упорядоченных по возрастанию с поиском дырок.
Второй создание второй таблицы полностью заполненной от 0 до 7600 И Select Where not in
Может есть еще SQL варианты. Первый прекрасно подходит для локальных баз.
Варианты в Select ов цикле не расматриваю.


← →
Nikols ©   (2003-06-27 17:22) [3]

Можно! Здесь еще проверка на цифры...

SELECT codsample
FROM
(
SELECT lpad(min(codsample)+1,8,"0") codsample
FROM
(
SELECT * FROM nmatk a
WHERE substr(a.codsample,1,1) between "0" and "9"
) a
WHERE NOT EXISTS
(select 1 from nmatk c
where c.codsample = lpad(a.codsample + 1,8,"0")
)
)


← →
Zacho ©   (2003-06-27 18:22) [4]


> Nikols © (27.06.03 17:22)

Такой запрос далеко не на всех СУБД будет работать.
А вот гораздо более простой вариант:
SELECT MIN(T1.NUM_FIELD)
FROM MY_TABLE T1
LEFT JOIN MY_TABLE T2 ON T2.NUM_FIELD=T1.NUM_FIELD+1
WHERE T2.NUM_FIELD IS NULL

По кпайней мере на IB - работает.


← →
Zacho ©   (2003-06-27 18:24) [5]


> Zacho © (27.06.03 18:22)

Блин, немножко ошибся, правильно так:
SELECT MIN(T1.NUM_FIELD)+1
FROM MY_TABLE T1
LEFT JOIN MY_TABLE T2 ON T2.NUM_FIELD=T1.NUM_FIELD+1
WHERE T2.NUM_FIELD IS NULL



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
6-67952
Миха
2003-05-14 11:07
2003.07.21
Почта и Прокси


14-68009
XobBIT
2003-07-04 12:35
2003.07.21
Мастера подскажите как получить палитру bmp файла?


1-67846
Kiril
2003-07-07 19:59
2003.07.21
Как добавлять в программу уже готовые


3-67741
Bless
2003-06-18 09:05
2003.07.21
LocalTable


14-67973
zep
2003-07-05 23:45
2003.07.21
Разрыв Online




   Наверх