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

Можно ли написать такой запрос, который бы возвращал
1 | text1text2text3
2 | text6
...
Рейтинг: 0 / 0
27.11.2002, 17:51
    #32073124
DimaR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
Ну я думаю в лобовую, 9i group by со свой агрегатной функцией :)
...
Рейтинг: 0 / 0
27.11.2002, 18:37
    #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
24.03.2003, 16:29
    #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
24.03.2003, 16:57
    #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
24.03.2003, 17:09
    #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
24.03.2003, 17:16
    #32125890
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
Понял я в чём дело.
А дело в следующем: я работаю в SQL Worksheet 8.0.5 - так вот там это не работает. В sqlplus от 8i - всё нормально.
Теперь кто мне обьяснит какое значение имеет версия клиента?
Что-то мне это не нравится.
...
Рейтинг: 0 / 0
24.03.2003, 17:21
    #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
24.03.2003, 18:28
    #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
25.03.2003, 08:56
    #32126201
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный запрос
Совсем не обязательно каждый раз в сообщении показывать команду создания типа. Смотри выше, там всё полностью указано.
...
Рейтинг: 0 / 0
25.03.2003, 09:16
    #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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Сложный запрос / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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