Выбор из массива составных типов в Postgres - PullRequest
2 голосов
/ 06 августа 2020

У меня составной тип вывод :

CREATE TYPE public.pin AS
(
    id uuid,
    name text,
);

И таблица устройство :

CREATE TABLE public.devices
(
    name text COLLATE pg_catalog."default" NOT NULL,
    pins pin[] NOT NULL
)

Как мне написать запрос для выбора pin.name из таблицы devices , где pin.id равен известному идентификатору?

Ответы [ 2 ]

3 голосов
/ 06 августа 2020

Для этого можно использовать боковое соединение:

SELECT pin.name
FROM devices, unnest(pins) AS pin -- implicit lateral join
WHERE pin.id = '77068690-787c-431d-9a6f-bd2a069fa5a4' -- random uuid
0 голосов
/ 06 августа 2020

Мне удалось решить проблему с помощью этого запроса:

SELECT name FROM (SELECT (UNNEST(pins)::pin).id, (UNNEST(pins)::pin).name FROM public.devices) AS _pins WHERE _pins.id = 'uuid'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...