Tengo un pin de tipo compuesto:
CREATE TYPE public.pin AS ( id uuid, name text, );Y un dispositivo de mesa:
CREATE TABLE public.devices ( name text COLLATE pg_catalog."default" NOT NULL, pins pin[] NOT NULL )¿Cómo escribo una consulta para seleccionar pin.name de la tabla de dispositivos donde pin.id es igual a una identificación conocida?
Puedes usar una unión lateral para esto:
SELECT pin.name FROM devices, unnest(pins) AS pin -- implicit lateral join WHERE pin.id = '77068690-787c-431d-9a6f-bd2a069fa5a4' -- random uuidLogré resolver el problema con esta consulta:
SELECT name FROM (SELECT (UNNEST(pins)::pin).id, (UNNEST(pins)::pin).name FROM public.devices) AS _pins WHERE _pins.id = 'uuid'