powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как эффективнее выбрать числовую последовательность
15 сообщений из 15, страница 1 из 1
Как эффективнее выбрать числовую последовательность
    #34110352
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо, чтобы запрос (ASA 8.0.3) возвращал последовательность чисел (к примеру, от 1 до 40). Какое решение будет самым элегантным?
Напрашивается вариант:
авторselect top 40 number(*) from <sometable>
вот только как гарантировать, что <sometable> будет иметь не меньше 40 строк? Что лучше взять за <sometable>? Или есть другие варианты?
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110355
DenisBocharic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select row_num as N
from dbo.RowGenerator
where N<=40
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110364
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RowGenerator в asa 9.0.2 появилась вроде
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110375
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МарсельRowGenerator в asa 9.0.2 появилась вродеВ whatsnew 9.0.2 есть запись:
авторsa_rowgenerator procedure The sa_rowgenerator system procedure is provided as an alternative to the RowGenerator table for returning a result set with rows between a specified start and end value.

You can use this procedure for such tasks as generating a result set with rows for every value in a range or generating test data for a known number of rows in a result set.А вот когда появилась таблица RowGenerator - увы, не скажу.
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110403
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
точно, извините
паникую и ввожу людей в заблуждение ...
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110406
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Увы - нет в ASA 8.0.3 ни таблицы такой, ни процедуры.
Еще варианты?
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110410
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня на 7.0.4 работает
или я что-то путаю ...
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110417
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я на sa_r... вижу только sa_read_backup_history и sa_reset_identity (
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110447
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A.K. wrote:

> Увы - нет в ASA 8.0.3 ни таблицы такой, ни процедуры.

Есть. Тестировал ответ от DenisBocharic на 8.0.3.5426 - работает.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34110451
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Dim2000
> Есть. Тестировал ответ от DenisBocharic на 8.0.3.5426 - работает.
>
Да, тупанул немножко. Процедуры нет, а таблица RowGenerator есть. Всем спасибо.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34111007
Vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DenisBocharicselect row_num as N
from dbo.RowGenerator
where N<=40

Прекраcная функция(сисстемеая таблица), а вот как быть если надо больше чем 255? Конечно можно пользоваться функцией number(*), что и делаю, но при этом надо иметь какую то заполненную таблицу с большим количеством записей или перчислять несколько
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34111032
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VinogradovПрекраcная функция(сисстемеая таблица), а вот как быть если надо больше чем 255? А что мешает сделать декартово поризведение этой таблицы на саму себя? В итоге будем иметь N^M (N в степени M) число строк, где N - число строк в таблице, M - количество самообъединений...

То есть, для таблицы с числом строк = 255 запрос вида:
Код: plaintext
select * from <table_name> t1 cross join <table_name> t2
вернет 65025 строк...
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34111149
vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна VinogradovПрекраcная функция(сисстемеая таблица), а вот как быть если надо больше чем 255? А что мешает сделать декартово поризведение этой таблицы на саму себя? В итоге будем иметь N^M (N в степени M) число строк, где N - число строк в таблице, M - количество самообъединений...

То есть, для таблицы с числом строк = 255 запрос вида:
Код: plaintext
select * from <table_name> t1 cross join <table_name> t2
вернет 65025 строк...
Так и делаю, но а если при установке системы таблицы пустые?
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34111283
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinogradovТак и делаю, но а если при установке системы таблицы пустые?А зачем Вам вообще таблицы?
Вот такое представление сделайте:
Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
select (v1_100.rn_100 -  1 ) *  100  + v2_100.rn_100 as rn_10000
  from (
          select (v1.rn -  1 ) *  10  + v2.rn as rn_100
            from (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v1
           cross join
                 (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v2
      ) v1_100,
      (
          select (v1.rn -  1 ) *  10  + v2.rn as rn_100
            from (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v1
           cross join
                 (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v2
      ) v2_100
и будет Вам "виртуальная таблица" с 10000 строками.
Кол-во строк можно сделать любым, в пределах возможностей Вашего сервера...
...
Рейтинг: 0 / 0
Как эффективнее выбрать числовую последовательность
    #34113475
Vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна vinogradovТак и делаю, но а если при установке системы таблицы пустые?А зачем Вам вообще таблицы?
Вот такое представление сделайте:
Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
select (v1_100.rn_100 -  1 ) *  100  + v2_100.rn_100 as rn_10000
  from (
          select (v1.rn -  1 ) *  10  + v2.rn as rn_100
            from (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v1
           cross join
                 (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v2
      ) v1_100,
      (
          select (v1.rn -  1 ) *  10  + v2.rn as rn_100
            from (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v1
           cross join
                 (
                   select  1  as rn union all
                   select  2  as rn union all
                   select  3  as rn union all
                   select  4  as rn union all
                   select  5  as rn union all
                   select  6  as rn union all
                   select  7  as rn union all
                   select  8  as rn union all
                   select  9  as rn union all
                   select  10  as rn
                 ) v2
      ) v2_100
и будет Вам "виртуальная таблица" с 10000 строками.
Кол-во строк можно сделать любым, в пределах возможностей Вашего сервера...
Спасибо
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как эффективнее выбрать числовую последовательность
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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