Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как обратиться к элементу вложенной структуры по имени / 5 сообщений из 5, страница 1 из 1
28.07.2020, 12:30
    #39984598
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу вложенной структуры по имени
Имеем:
Код: sql
1.
2.
3.
4.
create type t_order_item as (item_number int, price numeric, quantity numeric, ... );
create type t_order as (order_id int, ..., items t_order_item[]);
function get_order(p_order_id int)
returns t_order_header


К отдельному элементу массива можно обратиться как
Код: sql
1.
select unnest(res.items::t_order_item[]) from get_order(566) res;


Но хотелось бы обратиться к отдельному элементу из t_order_item, например к price. Как это можно сделать?
...
Рейтинг: 0 / 0
28.07.2020, 13:22
    #39984614
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу вложенной структуры по имени
Коллега нашёл решение
Код: sql
1.
2.
3.
4.
5.
select (e).*
from 
(select unnest(res.items::t_order_item[]) as e
   from get_order(566) res
) t;
...
Рейтинг: 0 / 0
28.07.2020, 21:09
    #39984746
Swa111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу вложенной структуры по имени
Kr_Yury, возможно получится так

Код: plsql
1.
2.
select (unnest(res.items::t_order_item[])).price
   from get_order(566) res



или так

Код: plsql
1.
2.
select res.price
   from unnest(((get_order(566)).items)::t_order_item[]) res
...
Рейтинг: 0 / 0
29.07.2020, 10:11
    #39984841
Kr_Yury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу вложенной структуры по имени
Swa111, да это уже вариации того что выше. Главное, что для разименования полей структуры результат после unnest надо обернуть в скобки (). Где об этом сказано в документации?
Причём приведение к типу можно не делать. То есть так тоже работает:
Код: sql
1.
2.
select res.*
from unnest(((get_order(566)).items)) res;
...
Рейтинг: 0 / 0
29.07.2020, 10:16
    #39984843
Павел Лузанов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как обратиться к элементу вложенной структуры по имени
Kr_Yury
Swa111, да это уже вариации того что выше. Главное, что для разименования полей структуры результат после unnest надо обернуть в скобки (). Где об этом сказано в документации?

https://postgrespro.ru/docs/postgresql/12/sql-expressions#FIELD-SELECTION
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как обратиться к элементу вложенной структуры по имени / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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