Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Написать непростой запрос  [new]
polin11
Member

Откуда:
Сообщений: 170
Использую СУБД Postgresql, есть таблица

https://www.db-fiddle.com/f/3ERqNCRRXJh5yEJvDtJMQf/0

CREATE TABLE forms (
	id serial PRIMARY KEY,
	account int not null,
	author text,
    doc int NOT NULL,
    users text[]
);

нужно получить результат следующего вида

author : {account: [users]}


insert into  forms(account, author, doc, users) values 
(1, 'Иванов', 3, array['Петя', 'Вася']),
(1, 'Иванов', 3, array['Иван']),
(2, 'Иванов', 3, array['Иван']),
(2, 'Сергеев', 3, array['Павел']),
(2, 'Сергеев', 3, array['Роман']),
(1, 'Сергеев', 3, array['Коля' , 'Дима'])



для предыдущего набора должны получить такой результат

'Иванов': {1: ['Петя', 'Вася', 'Иван'], 2: ['Иван']},
'Сергеев': {1: ['Коля' , 'Дима'], 2: ['Павел', 'Роман']}



Нужно написать запрос, который вернет результат с такой структурой,
чтобы потом по минимуму в коде формировать такой словарь.

Нужна конструктивная идея как написать такой запрос

Сообщение было отредактировано: 8 ноя 21, 02:39
8 ноя 21, 02:38    [22392939]     Ответить | Цитировать Сообщить модератору
 Re: Написать непростой запрос  [new]
grgdvo
Member

Откуда:
Сообщений: 134
polin11,

см. функции json_build_object и подобные, чтобы из набора аргументов заданного типа создавать JSONы.
В вашем случае надо сначала группировку массивов сделать, потм это обернуть уже в объект по имени аккаунта.
8 ноя 21, 06:48    [22392951]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить