Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / unnest(composite_type[]) / 4 сообщений из 4, страница 1 из 1
23.04.2015, 14:11
    #38943576
VanillaNInja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unnest(composite_type[])
Никак не пойму, как можно работать с массивами композитных типов

Хочу сделать unnest, а потом вытащить по полю значение, а не получается :-/

Код: plsql
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.
[SQL]BEGIN;

drop type if exists typing_resources_test;
CREATE  TYPE typing_resources_test AS (
	resource_id integer,
	group_id integer
);

-- plpgsql:
DO
$$
DECLARE
	_resources typing_resources_test[];
BEGIN
	
	
	_resources[0]:=(1,2)::typing_resources_test;
	_resources[1]:=(3,4)::typing_resources_test;
	RAISE NOTICE ' %' , (select resource_id from (select unnest(_resources))x where group_id= 4  );
	--


END;
$$;

NOTICE:  type "typing_resources_test" does not exist, skipping

[Err] ERROR:  column "resource_id" does not exist
LINE 1: SELECT (select resource_id from (select unnest(_resources))x...
                       ^
QUERY:  SELECT (select resource_id from (select unnest(_resources))x where group_id= 4  )
CONTEXT:  PL/pgSQL function inline_code_block line 9 at RAISE



посоветуйте ,как это лучше провернуть, пжл?
...
Рейтинг: 0 / 0
23.04.2015, 14:17
    #38943587
qwwq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unnest(composite_type[])
VanillaNInja,

а так ?
Код: sql
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.
BEGIN;

drop type if exists typing_resources_test;
CREATE  TYPE typing_resources_test AS (
	resource_id integer,
	group_id integer
);

-- plpgsql:
DO
$$
DECLARE
	_resources typing_resources_test[];
BEGIN
	
	
	_resources[0]:=(1,2)::typing_resources_test;
	_resources[1]:=(3,4)::typing_resources_test;
	RAISE NOTICE ' %' , (select resource_id from (select * FROM unnest(_resources)) x where group_id= 4  );
	--


END;
$$;
rollback;

...
Рейтинг: 0 / 0
23.04.2015, 14:20
    #38943590
Maxim Boguk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unnest(composite_type[])
VanillaNInja,

Код: plaintext
1.
2.
- 	RAISE NOTICE ' %' , (select resource_id from (select unnest(_resources))x where group_id= 4  );
+      RAISE NOTICE ' %' , (select resource_id from (select * FROM unnest(_resources))x where group_id= 4);


--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
23.04.2015, 14:35
    #38943610
VanillaNInja
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unnest(composite_type[])
Читая магия! Работает!
Спасибо вам большое еще раз!
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / unnest(composite_type[]) / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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