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

Дорогие форумчане, подскажите как это сделать?
...
Рейтинг: 0 / 0
28.04.2008, 19:09
    #35284336
Devider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Ггг Не в электроный архив идешь часом? =)
...
Рейтинг: 0 / 0
28.04.2008, 19:12
    #35284342
muromets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Нет ))) Просто изучаю SQL, и вот застопорился на таком вот примере... (
...
Рейтинг: 0 / 0
28.04.2008, 19:15
    #35284345
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
И где твоя последовательность целых чисел имеется? В таблице, в строке, в массиве на клиенте?
...
Рейтинг: 0 / 0
28.04.2008, 19:24
    #35284356
muromets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
В таблице столбец с такой последовательностью..
...
Рейтинг: 0 / 0
28.04.2008, 19:39
    #35284372
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Показывай полный скрипт воссоздающий условия задачи.
Потом показывай как пробовал решать.
...
Рейтинг: 0 / 0
28.04.2008, 19:56
    #35284390
muromets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Предполагая, что среди идентификаторов квадратов имеются пропуски, найти минимальный и максимальный "свободный" идентификатор в диапазоне между имеющимися максимальным и минимальным идентификаторами.
Если пропусков нет, выводить 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
28.04.2008, 21:03
    #35284449
muromets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Devider Ггг Не в электроный архив идешь часом? =)

Devider, я и не понял, что "Ггг" это ссылка.. Смотрю совсем похожая задача. Спасибо тебе!!! Сейчас буду разбираться ;)
...
Рейтинг: 0 / 0
29.04.2008, 07:06
    #35284727
mdb
mdb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Задание с sql-ex.ru
Сам долго осилить не мог.
...
Рейтинг: 0 / 0
29.04.2008, 18:20
    #35286885
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
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
29.04.2008, 21:55
    #35287211
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
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
29.04.2008, 23:18
    #35287297
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Создать опорную таблицу где будут все стоки без пропусков, и через лефт-джойн вывести все не имеющие пару в вашей таблице.
Тут пример на это и привели.
Через кросс-джойн создавайте опорную таблицу что бы было "красиво"
...
Рейтинг: 0 / 0
30.04.2008, 08:29
    #35287526
Jartisan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
авторЧерез кросс-джойн создавайте опорную таблицу что бы было "красиво"
Туплю. можно пример, плиз?
...
Рейтинг: 0 / 0
30.04.2008, 10:24
    #35287799
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Код: 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
30.04.2008, 10:31
    #35287832
Jartisan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
2 Worobjoff
Спасибо
И ведь действительно...
эээх косность мышления... мать её...
...
Рейтинг: 0 / 0
30.04.2008, 10:46
    #35287897
Jartisan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
<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
02.05.2008, 16:28
    #35290595
muromets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Вот таким образом решаю задачу и система мне болты навешивает..

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
12.05.2008, 22:09
    #35307659
muromets
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Автор пишет:
Удалите квадрат с номером 1.
Уберите счетчик. Задача допускает общее решение.

Форумчане, спасайте, что за квадрат номер 1 ???
...
Рейтинг: 0 / 0
23.07.2008, 11:53
    #35446589
Невир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Запрос неправильный. Зачем выборка на 99 элементов? Требуется не последовательность, а конкретный два идентификатора. Ищешь первое совпадение пустого и последнее пустого идентификатора.
...
Рейтинг: 0 / 0
23.07.2008, 16:13
    #35447597
trroy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
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
13.08.2008, 02:35
    #35484240
г_о_с_т_ь
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
Очень красивое решение: http://forum.vingrad.ru/forum/topic-194444/kw-sql.html#st_15_view_0.
Жаль, что не мое.
А задача из sql-ex.ru. ::)
...
Рейтинг: 0 / 0
13.08.2008, 02:58
    #35484245
C#C++
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вывести пропущенные числа в последовательности в SQL server 2000 ?
г_о_с_т_ьОчень красивое решение: http://forum.vingrad.ru/forum/topic-194444/kw-sql.html#st_15_view_0.Так себе решение. соst великоват :)
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как вывести пропущенные числа в последовательности в SQL server 2000 ? / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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