powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сложный запрос
11 сообщений из 11, страница 1 из 1
Сложный запрос
    #32072949
jd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
jd
Гость
Запрос по двум таблицам возвращает поля id, text_data.
Для каждого id может быть несколько text_data.
т.е.
1 | text1
1 | text2
1 | text3
2 | text6
....

Можно ли написать такой запрос, который бы возвращал
1 | text1text2text3
2 | text6
...
Рейтинг: 0 / 0
Сложный запрос
    #32073124
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я думаю в лобовую, 9i group by со свой агрегатной функцией :)
...
Рейтинг: 0 / 0
Сложный запрос
    #32073138
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Priamo net.
nugno icpolzovt :
-- sobstvennuyu functions i cast()
ili
-- cast(multiset(select()) ...

primer;

create type lists_objects as table of varchar2(1000);
/
SQL> set lines 100;
set pages 9999;
col ls format a80 word;
select u.user_id,
cast(multiset(select object_name
from all_objects a
where u.username = a.owner
and
rownum <= 3) as lists_objects ) ls
from all_users u
where username in ('SYS','SYSTEM');

USER_ID LS
---------- --------------------------------------------------------------------------------
5 LISTS_OBJECTS('APT_FORMAT', 'AQ$DEF$_AQCALL', 'AQ$DEF$_AQERROR')
0 LISTS_OBJECTS('ACCESS$', 'ALL_ALL_TABLES', 'ALL_ARGUMENTS')
...
Рейтинг: 0 / 0
Сложный запрос
    #32125812
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В какой версии Oracle - это работает? У меня не работает ни в 8i
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQLWKS> drop type lists_objects;
Предложение обработано.
SQLWKS> create type lists_objects as table of varchar2( 1000 ); 
Предложение обработано.
SQLWKS> / 
SQLWKS> select u.user_id, 
      2 > cast(multiset(select object_name 
      3 > from all_objects a 
      4 > where u.username = a.owner 
      5 > and 
      6 > rownum <=  3 ) as lists_objects ) ls 
      7 > from all_users u 
      8 > where username in ('SYS','SYSTEM'); 
ORA- 00932 : несовместимый тип данных
SQLWKS> 

ни в 9i
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQLWKS> drop type lists_objects;
Предложение обработано.
SQLWKS> create type lists_objects as table of varchar2( 1000 ); 
Предложение обработано.
SQLWKS> / 
SQLWKS> select u.user_id, 
      2 > cast(multiset(select object_name 
      3 > from all_objects a 
      4 > where u.username = a.owner 
      5 > and 
      6 > rownum <=  3 ) as lists_objects ) ls 
      7 > from all_users u 
      8 > where username in ('SYS','SYSTEM'); 
ORA- 00932 : несовместимые типы данных: ожидалось NUMBER, получено TEST.LISTS_OBJECTS
SQLWKS> 
SQLWKS> 
...
Рейтинг: 0 / 0
Сложный запрос
    #32125856
Mergen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
SQL*Plus: Release  8 . 1 . 7 . 0 . 0  - Production on  207 ; 237 ; 228 ;  204 ; 224 ; 240 ;  24   19 : 59 : 58   2003 

(c) Copyright  2000  Oracle Corporation.  All rights reserved.


Присоединен к:
Oracle8i Release  8 . 1 . 7 . 4 . 1  - Production
JServer Release  8 . 1 . 7 . 4 . 1  - Production

SQL> create type lists_objects as table of varchar2( 1000 ); 
   2   /

 210 ; 232 ; 239 ;  241 ; 238 ; 231 ; 228 ; 224 ; 237 ;.

SQL>  set lines  100 ; 
SQL> set pages  9999 ; 
SQL> col ls format a80 word; 
SQL> select u.user_id, 
   2   cast(multiset(select object_name 
   3   from all_objects a 
   4   where u.username = a.owner 
   5   and 
   6   rownum <=  3 ) as lists_objects ) ls 
   7   from all_users u 
   8   where username in ('SYS','SYSTEM'); 

   USER_ID LS
 ---------- --------------------------------------------------------------------------------
 
          5  LISTS_OBJECTS('AQ$DEF$_AQCALL', 'AQ$DEF$_AQERROR', 'AQ$_QUEUES')
          0  LISTS_OBJECTS('/1001a851_ConstantDefImpl', '/1005bd30_LnkdConstant',
           '/10076b23_OraCustomDatumClosur')

...
Рейтинг: 0 / 0
Сложный запрос
    #32125878
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для 9i решение данной задачи заключается в написании своей агрегатной функции, т.н. User-Defined Aggregate Functions:

http://technet.oracle.com/docs/products/oracle9i/doc_library/release2/appdev.920/a96595/dci11agg.htm#1004572

Была еще статья Владимира Бегуна в Oracle RE

http://www.oracle.com/ru/oramag/augsept2002/index.html?dev_udag.html

по каким-то причинам порезанная, но по-моему в ru.rdbms.oracle Владимир ее дополнял, можно поискать.
...
Рейтинг: 0 / 0
Сложный запрос
    #32125890
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял я в чём дело.
А дело в следующем: я работаю в SQL Worksheet 8.0.5 - так вот там это не работает. В sqlplus от 8i - всё нормально.
Теперь кто мне обьяснит какое значение имеет версия клиента?
Что-то мне это не нравится.
...
Рейтинг: 0 / 0
Сложный запрос
    #32125897
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Oracle8i Enterprise Edition Release  8 . 1 . 7 . 4 . 0  - Production
JServer Release  8 . 1 . 7 . 4 . 0  - Production
SQLWKS> select u.user_id, 
      2 >  cast(multiset(select object_name 
      3 > from all_objects a 
      4 >  where u.username = a.owner 
      5 >  and 
      6 >  rownum <=  3 ) as lists_objects ) ls 
      7 >  from all_users u 
      8 >  where username in ('SYS','SYSTEM'); 
ORA- 00932 : несовместимый тип данных
SQLWKS> 
...
Рейтинг: 0 / 0
Сложный запрос
    #32126003
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softbuilder@inbox.ru

A kto budet sozdavat tip dlya kastinga?
Код: plaintext
1.
create type lists_objects as table of varchar2( 1000 );
/ 
...
Рейтинг: 0 / 0
Сложный запрос
    #32126201
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совсем не обязательно каждый раз в сообщении показывать команду создания типа. Смотри выше, там всё полностью указано.
...
Рейтинг: 0 / 0
Сложный запрос
    #32126222
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя мне джудовского места не жалко, пожалуйста
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SQLWKS> drop type lists_objects;
Предложение обработано.
SQLWKS> create type lists_objects as table of varchar2( 1000 ); 
Предложение обработано.
SQLWKS> / 
SQLWKS> 
SQLWKS> select u.user_id, 
      2 > cast(multiset(select object_name 
      3 > from all_objects a 
      4 > where u.username = a.owner 
      5 > and 
      6 > rownum <=  3 ) as lists_objects ) ls 
      7 > from all_users u 
      8 > where username in ('SYS','SYSTEM'); 
ORA- 00932 : несовместимый тип данных
SQLWKS> 
SQLWKS> 


Еще раз обращаю внимание, что в sqlplus от 8i это работает
Код: 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.
Microsoft Windows  2000  [Version  5 . 00 . 2195 ]
(C) Copyright  1985 - 2000  Microsoft Corp.

D:\WINNT\Profiles\cft>sqlplus

SQL*Plus: Release  8 . 1 . 7 . 0 . 0  - Production on  9516 ;Єэ  9568 ;рЁ  25   09 : 09 : 40   2003 

(c) Copyright  2000  Oracle Corporation.  All rights reserved.

Enter user-name: work@test
Enter password:

Connected to:
Oracle8i Enterprise Edition Release  8 . 1 . 7 . 4 . 0  - Production
JServer Release  8 . 1 . 7 . 4 . 0  - Production

SQL> select u.user_id,
   2   cast(multiset(select object_name
   3   from all_objects a
   4   where u.username = a.owner
   5   and
   6   rownum <=  3 ) as lists_objects ) ls
   7   from all_users u
   8   where username in ('SYS','SYSTEM');

   USER_ID
 ----------
 
LS
 --------------------------------------------------------------------------------
 
          5 
LISTS_OBJECTS('DEF$_TEMP$LOB', 'PRODUCT_PRIVS', 'QUEST_COM_PRODUCTS')

          0 
LISTS_OBJECTS('ALL_ALL_TABLES', 'ALL_ARGUMENTS', 'ALL_ASSOCIATIONS')


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


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