powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по SQL
13 сообщений из 13, страница 1 из 1
Вопрос по SQL
    #32574555
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В талице хранятся цифры от 1 до 999
1
2
3
8
9
33
...
999

Среди них могут быть пропуски
Задача - надо для выбранного числа (например 33) найти ближайшее целое число, которого в данном столбце ещё нет

Можно ли это решить запросом?
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574559
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запросом-вряд ли. Можно через ХП. А почему именно эта задача? Это не про генераторы случайно?
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574562
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максимум, что можно пользовать - параметры в запросе, потому что задачка должна решаться в разных базах
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574568
vis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
одним запросом при заданных условиях, имхо, нет
а использовать дополнительные таблицы можно?
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574573
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из исходных данных- это всё что есть. Создать временную таблицу наверно можно
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574612
vis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cоздаешь временную таблицу (я назвал её test1), которую заполняешь
числами от 1 до 999 (кстати цифр от 1 до 999 не существует )

запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select (select max(id)
            from test1
            where id< 8  and
                  id not in (select t1.id from test1 t1 where t1.id not in (select t.id from test t))),
       (select min(id)
            from test1
            where id> 8  and
                  id not in (select t1.id from test1 t1 where t1.id not in (select t.id from test t)))
from rdb$database

вместо 8 подставь переменную
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574624
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно решить одним запросом !
Но, однозначно, он не будет простым...
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574631
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос для ORACLE 8.0.6

select pre, abs( min( 45 - pre ) ) as x
from (
select t1.nr as pre, t2.nr as post
from test t1, test t2
where t1.nr + 1 = t2.nr(+)<- (Эту операцию надо заменить на left join)
)
where post is null
group by pre
order by x

первая строка и есть ответ - всем спасибо (и Артему особое)

Bol
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574652
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Bol

На этом сайте есть конфа и по Оракулу...

...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574661
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Johnmen
А вопрос был по SQL-92 и последний пример показывает, как это решить и в IB
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574663
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще версия

select
t1.nr n1,
t2.nr+1 n2
from test t1, test t2
where t1.nr(+) = t2.nr+1 and
t2.nr+1 > 33 and t1.nr is null
order by n2;

Bol
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574668
Фотография Bol
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2vis

создал таблицу
select nr,min(abs(nr-33)) from
(select t1.nr from test1 t1 where t1.nr not in (select t.nr from test t))
group by nr
order by min(abs(nr-33))

первая строка и есть ответ (если решения 2 , то вторая строка тоже)
...
Рейтинг: 0 / 0
Вопрос по SQL
    #32574901
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Bol

Тихо, сам с собою...



abs ?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вопрос по SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]