Я новичок в json в postgres, поэтому, пожалуйста, ничего не бросайте в меня Я пытаюсь выбрать данные для объекта JSONB. Я планирую использовать его для обновления из избранных. Прямо сейчас это выглядит так:
select to_jsonb(full_address) as full_address
from (
select "user".living_addr as living_id,
"user".living_addr_path as living_path,
null as living_house,
"user".address_level_id as registration_id,
"user".address_path as registration_path,
null as registration_house,
"user".work_addr as work_id,
"user".work_addr_path as work_path,
null as work_house,
public."user".user_id
from public."user"
) full_address
group by user_id, full_address
order by user_id
Но мне нужно, чтобы "living_id", "living_path", "living_house" находились в объекте так:
{
"living": {"id", "path", "house"}
}
и то же самое для регистрации, работы и обучения.
Кроме того, мне не нужен user_id в объекте результата.
Пытался использовать такие подзапросы, как:
select to_jsonb(living) as living,
to_jsonb(registration) as registration,
...
from (
select "user".living_addr as id,
"user".living_addr_path as path,
null as house
from public."user"
) living,
(
select "user".address_level_id as id,
"user".address_path as path,
null as house
from public."user"
) registration
... etc
Но сейчас результат неправильный без группировки, и я не могу найти подсказку, как использовать group by в этом. Должен быть другой, более простой способ, которого я не вижу.
Объект результата должен выглядеть следующим образом:
{
"work": {"id": ..., "path": [..., ...], "house": null},
"living": {"id": ..., "path": [..., ...], "house": null},
"registration": {"id": ..., "path": [..., ...], "house": null}
}
Есть ли способ сделать это в postgres 9.6?