powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как обратиться к элементу вложенной структуры по имени
5 сообщений из 5, страница 1 из 1
Как обратиться к элементу вложенной структуры по имени
    #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
Как обратиться к элементу вложенной структуры по имени
    #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
Как обратиться к элементу вложенной структуры по имени
    #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
Как обратиться к элементу вложенной структуры по имени
    #39984841
Kr_Yury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111, да это уже вариации того что выше. Главное, что для разименования полей структуры результат после unnest надо обернуть в скобки (). Где об этом сказано в документации?
Причём приведение к типу можно не делать. То есть так тоже работает:
Код: sql
1.
2.
select res.*
from unnest(((get_order(566)).items)) res;
...
Рейтинг: 0 / 0
Как обратиться к элементу вложенной структуры по имени
    #39984843
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kr_Yury
Swa111, да это уже вариации того что выше. Главное, что для разименования полей структуры результат после unnest надо обернуть в скобки (). Где об этом сказано в документации?

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


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