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

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

Можно ли это решить запросом?
...
Рейтинг: 0 / 0
23.06.2004, 19:21:50
    #32574559
Winni-Pooh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
Запросом-вряд ли. Можно через ХП. А почему именно эта задача? Это не про генераторы случайно?
...
Рейтинг: 0 / 0
23.06.2004, 19:24:28
    #32574562
Bol
Bol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
Максимум, что можно пользовать - параметры в запросе, потому что задачка должна решаться в разных базах
...
Рейтинг: 0 / 0
23.06.2004, 19:27:27
    #32574568
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
одним запросом при заданных условиях, имхо, нет
а использовать дополнительные таблицы можно?
...
Рейтинг: 0 / 0
23.06.2004, 19:29:48
    #32574573
Bol
Bol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
Из исходных данных- это всё что есть. Создать временную таблицу наверно можно
...
Рейтинг: 0 / 0
23.06.2004, 19:52:21
    #32574612
vis
vis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
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
23.06.2004, 20:01:35
    #32574624
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
Можно решить одним запросом !
Но, однозначно, он не будет простым...
...
Рейтинг: 0 / 0
23.06.2004, 20:06:18
    #32574631
Bol
Bol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
Запрос для 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
23.06.2004, 20:21:15
    #32574652
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
>Bol

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

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

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
23.06.2004, 21:04:39
    #32574668
Bol
Bol
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
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
24.06.2004, 09:19:53
    #32574901
Johnmen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по SQL
2Bol

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



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


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