にJSON配列に複数の行を変換:PostgreSQLは関係一対多に2つのテーブルがありjson_build_object
CREATE TABLE user (
id bigserial PRIMARY KEY,
name varchar(255) NOT NULL UNIQUE,
)
CREATE TABLE user_pets (
id bigserial PRIMARY KEY,
user_id int8 FOREIGN KEY REFERENCES user(id),
name varchar(255)
)
user.id
はDEFAULT
によって生成されます。
ユーザーと自分のペットのJSONを含む別のテーブル:
CREATE TABLE user_json (
user_id int8 FOREIGN KEY REFERENCES user(id),
full_info json
)
私は、JSONは次のようになりたい:
{
"id": 1,
"name": "John",
"pets": [
{
"id": 1,
"user": 1,
"name": "Kitty"
},
{
"id": 2,
"user": 1,
"name": "Cat"
}
]
}
私は、ユーザーを処理するためにjson_build_object
を使用していますが、私はしないでください複数の行をペットの配列に変換する方法を知っている:
json_build_object(
'id', user.id,
'name', user.name,
'pets', --WHAT SHALL I PASS HERE?
)
Postgres 10
を私はこれを通過したときに'json_build_object'関数に問い合わせると、' ERROR:サブクエリは1つのカラムだけを返す必要があります '。私はペットの配列を含むユーザーのjson情報が必要ですが、私はあなたのクエリにユーザーデータが表示されません。私は残念ですが、どうしたらいいのですか? – gorodkovskaya
JSON文字列を挿入すると、インスタンス上で動作するので奇妙です:SELECT a.full_info - >> 'id'、a.full_info - >> 'name' 、B * 「{ "ID" SELECT(FROM:1、 "名前": "ジョン"、 "ペット":[ { "ID":1、 "ユーザ":1、 「名前「: "キティ" }、 { "ID":2、 "ユーザ":1、 "名前": "CAT" } ]} ':: CROSS)full_infoとしてJSONが横json_to_recordsetをJOIN (a.full_info - > 'pets') b( "id"の整数 、 "user"の整数 、 "name" varchar) – Breathe