powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как вывести пропущенные числа в последовательности в SQL server 2000 ?
22 сообщений из 22, страница 1 из 1
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284325
muromets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется последовательность целых чисел - 1,2,3,4,6,7,10,11,15
Нужно вывести на экран - 5,8,9,12,13,14

Дорогие форумчане, подскажите как это сделать?
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284336
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ггг Не в электроный архив идешь часом? =)
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284342
muromets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет ))) Просто изучаю SQL, и вот застопорился на таком вот примере... (
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284345
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И где твоя последовательность целых чисел имеется? В таблице, в строке, в массиве на клиенте?
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284356
muromets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице столбец с такой последовательностью..
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284372
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Показывай полный скрипт воссоздающий условия задачи.
Потом показывай как пробовал решать.
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284390
muromets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предполагая, что среди идентификаторов квадратов имеются пропуски, найти минимальный и максимальный "свободный" идентификатор в диапазоне между имеющимися максимальным и минимальным идентификаторами.
Если пропусков нет, выводить NULL.
Например, для последовательности идентификаторов квадратов 1,2,5,7 результат должен быть 3 и 6

Схема базы данных состоит из трех отношений:
utQ (Q_ID int,Q_NAME varchar(35))
utV (V_ID int,V_NAME varchar(35),V_COLOR char(1))
utB (B_Q_ID int,B_V_ID int,B_VOL tinyint, B_DATETIME datetime)
Таблица utQ содержит идентификатор и название квадрата, цвет которого первоначально черный.
Таблица utV содержит идентификатор, название и цвет баллончика с краской.
Таблица utB содержит информацию об окраске квадрата баллончиком: идентификатор квадрата, идентификатор баллончика, количество краски и время окраски.
При этом следует иметь в виду, что:
- баллончики с краской могут быть трех цветов - красный V_COLOR='R', зеленый V_COLOR='G', голубой V_COLOR='B' (латинские буквы).
- объем баллончика равен 255 и первоначально он полный;
- цвет квадрата определяется по правилу RGB, т.е. R=0,G=0,B=0 - черный, R=255, G=255, B=255 - белый;
- запись в таблице закрасок utB уменьшает количество краски в баллончике на величину B_VOL и соответственно увеличивает количество краски в квадрате на эту же величину;
- значение 0 < B_VOL <= 255
- Количество краски одного цвета в квадрате не превышает 255, а количество краски в баллончике не может быть меньше нуля.
********************************************************************************

Как решать, не знаю с чего начать... Предполагаю, что нужно использовать циклы, но в стандартной документации SQL не могу найти..
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284449
muromets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Devider Ггг Не в электроный архив идешь часом? =)

Devider, я и не понял, что "Ггг" это ссылка.. Смотрю совсем похожая задача. Спасибо тебе!!! Сейчас буду разбираться ;)
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35284727
mdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mdb
Гость
Задание с sql-ex.ru
Сам долго осилить не мог.
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35286885
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muromets пишет:
> Имеется последовательность целых чисел - 1,2,3,4,6,7,10,11,15
> Нужно вывести на экран - 5,8,9,12,13,14
>
> Дорогие форумчане, подскажите как это сделать?

printf("5, 8, 9, 12, 13, 14\n");
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35287211
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
murometsИмеется последовательность целых чисел - 1,2,3,4,6,7,10,11,15
Нужно вывести на экран - 5,8,9,12,13,14

Дорогие форумчане, подскажите как это сделать?к примеру так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TABLE AllIntegers (
    Value INT NOT NULL PRIMARY KEY
)
GO

CREATE TABLE BlankIntegers (
    Value INT NOT NULL PRIMARY KEY
)
GO


INSERT INTO AllIntegers (Value)
SELECT  1  UNION
SELECT  2  UNION
SELECT  3  UNION
SELECT  4  UNION
SELECT  5 ;

INSERT INTO BlankIntegers (Value)
SELECT  1  UNION
SELECT  3  UNION
SELECT  5 ;

SELECT Value FROM AllIntegers
 WHERE Value NOT IN (SELECT Value FROM BlankIntegers);

DROP TABLE BlankIntegers
GO

DROP TABLE AllIntegers
GO
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35287297
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создать опорную таблицу где будут все стоки без пропусков, и через лефт-джойн вывести все не имеющие пару в вашей таблице.
Тут пример на это и привели.
Через кросс-джойн создавайте опорную таблицу что бы было "красиво"
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35287526
Jartisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧерез кросс-джойн создавайте опорную таблицу что бы было "красиво"
Туплю. можно пример, плиз?
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35287799
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
select d+t from
(select  0  union select  10  union select  20  union select  30  union select  40 
union select  50  union select  60  union select  70  union select  80  union select  90 ) as t2(t)
cross join
(select  0  union select  1  union select  2  union select  3  union select  4 
union select  5  union select  6  union select  7  union select  8  union select  9 ) as t1(d)
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35287832
Jartisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Worobjoff
Спасибо
И ведь действительно...
эээх косность мышления... мать её...
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35287897
Jartisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<OFFTOPIC>
Вот ещё один велосипед на эту тему. Раздосадованный предыдущей косностью радовался как ребенок когда родил вот это
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
declare @MaxNum int
set @MaxNum= 150 ;
with num(n) as (
  select  0  as n
  union all
  select n1.n+ 1 
  from num n1
  where n<@MaxNum

)
select * from num
option (maxrecursion  0 )

и как мало человеку для радости надо
</OFFTOPIC>
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35290595
muromets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот таким образом решаю задачу и система мне болты навешивает..

SELECT MIN(ut1.Q_ID), MAX(ut1.Q_ID) FROM (select d+t as Q_ID from
(select 0 union select 10 union select 20 union select 30 union select 40
union select 50 union select 60 union select 70 union select 80 union select 90) as t2(t)
cross join
(select 1 union select 2 union select 3 union select 4
union select 5 union select 6 union select 7 union select 8 union select 9) as t1(d)
) as ut1 LEFT JOIN utQ ut2 ON ut1.Q_ID = ut2.Q_ID
WHERE ut2.Q_ID IS NULL AND ut1.Q_ID < (select max(Q_ID) from utQ)

Типа ответ правильный, но проверка не принимает решение
* Несовпадение данных (2)

Не пойму, что еще нужно сюда добавить???
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35307659
muromets
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автор пишет:
Удалите квадрат с номером 1.
Уберите счетчик. Задача допускает общее решение.

Форумчане, спасайте, что за квадрат номер 1 ???
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35446589
Невир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос неправильный. Зачем выборка на 99 элементов? Требуется не последовательность, а конкретный два идентификатора. Ищешь первое совпадение пустого и последнее пустого идентификатора.
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35447597
trroy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
murometsПредполагая, что среди идентификаторов квадратов имеются пропуски, найти минимальный и максимальный "свободный" идентификатор в диапазоне между имеющимися максимальным и минимальным идентификаторами.
Если пропусков нет, выводить NULL.

utQ (Q_ID int,Q_NAME varchar(35))

Как решать, не знаю с чего начать... Предполагаю, что нужно использовать циклы, но в стандартной документации SQL не могу найти..
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
select min(R1.VAL), max(R2.VAL)
  from (
        select d.cur_val +  1  VAL
          from (
                 select a.Q_ID cur_val,
                        ( 
                          select min(c.Q_ID)
                            from utQ c
                           where c.Q_ID > a.Q_ID
                        ) next_val
                   from utQ a
               ) d
         where d.next_val - d.cur_val >  1 
       ) R1,
       (
        select d.cur_val -  1  VAL
          from (
                 select a.Q_ID cur_val,
                        ( 
                          select max(c.Q_ID)
                            from utQ c
                           where c.Q_ID < a.Q_ID
                        ) prev_val
                   from utQ a
               ) d
         where d.cur_val - d.prev_val >  1 
       ) R2
может упростить как-нить можно =)
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35484240
г_о_с_т_ь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень красивое решение: http://forum.vingrad.ru/forum/topic-194444/kw-sql.html#st_15_view_0.
Жаль, что не мое.
А задача из sql-ex.ru. ::)
...
Рейтинг: 0 / 0
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
    #35484245
C#C++
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
г_о_с_т_ьОчень красивое решение: http://forum.vingrad.ru/forum/topic-194444/kw-sql.html#st_15_view_0.Так себе решение. соst великоват :)
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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