Как вставить данные из одной таблицы в другую в формате массива? - PullRequest
0 голосов
/ 06 июля 2019

Я настраиваю две таблицы Postgres: таблицу 1 и таблицу 2.

В таблице 1 есть user_id, а также имя и описание. Таблица 2 имеет тот же user_id, что и user, и массив имени и описания.

Теперь я хочу вставить данные в массивы name и description таблицы table2 из таблицы table1. Все записи с одинаковым идентификатором user_id в table1 должны иметь одну запись в table2, в которой user совпадает с user_id, а массивы name и description должны содержать остальные данные.

id UUID PRIMARY KEY,
user_id UUID NOT NULL,
name VARCHAR NOT NULL,
description VARCHAR NOT NULL
)

table2(
id UUID PRIMARY KEY,
user UUID NOT NULL,
name VARCHAR [],
description VARCHAR [],
FOREIGN KEY (user) REFERENCES table1 table1 (user_id) 
)

1 Ответ

0 голосов
/ 06 июля 2019

Я думаю, что вы хотите:

insert into table2 (id, user, name, description)
   select uuid_generate_v1(),  -- or whichever generation function you prefer
          user_id, array_agg(name order by id), array_agg(description order by id)
   from table1
   group by user_id;

Обратите внимание на предложение order by, чтобы имена и описания в массивах были в одинаковом порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...