2015-11-15 3 views
2

Если у меня есть таблица вроде этого:Postgres 9.4: Включить родственный столбец в каждой jsonb результате массив

office_id int 
employees jsonb 

и данные выглядит примерно так:

1 
[{ "name" : "John" }, { "name" : "Jane" }] 

Есть простой способ запрос так, что результаты выглядят следующим образом:

name,office_id 
John,1 
Jane,1 

Я читал через json functions и кажется, что это возможно, но я не могу понять это. Я бы предпочел не хранить office_id для каждого вложенного объекта.

ответ

2

Вы можете использовать json_array_elements расширить массив со JSon

select id , json_array_elements(employees)->>'name' from mytable 

http://sqlfiddle.com/#!15/9a847/5

+0

Для того, чтобы использовать это, мне нужно, чтобы указать каждый столбец самостоятельно. Например, если объекты в массиве имеют 5 свойств, мне нужно использовать 5 вызовов json_array_elements? –

+1

@JeremyBaker yes, один вызов json_array_element для каждого свойства, которое вам нужно выбрать. Результат будет содержать столько же строк, сколько количество элементов в массиве json. – FuzzyTree

Смежные вопросы