という名前の列teams
を含むテーブルで PostgreSQL 9.4 を使用しています。Playersを持つすべてのチームと、そのプレーヤーの配列を取得できるクエリを探しています。jsonb
json
3
4
7
テーブルには、次のjson
データを含む 2 つの行が含まれています。
最初の行:
{
"id": 1,
"name": "foobar",
"members": {
"coach": {
"id": 1,
"name": "A dude"
},
"players": [
{
"id": 2,
"name": "B dude"
},
{
"id": 3,
"name": "C dude"
},
{
"id": 4,
"name": "D dude"
},
{
"id": 6,
"name": "F dude"
},
{
"id": 7,
"name": "G dude"
}
]
}
}
2 行目:
{
"id": 2,
"name": "bazbar",
"members": {
"coach": {
"id": 11,
"name": "A dude"
},
"players": [
{
"id": 3,
"name": "C dude"
},
{
"id": 5,
"name": "E dude"
},
{
"id": 6,
"name": "F dude"
},
{
"id": 7,
"name": "G dude"
},
{
"id": 8,
"name": "H dude"
}
]
}
}
必要なチームのリストを取得するには、どのようなクエリを作成する必要がありますか? メンバー プレーヤーから配列を作成して比較するクエリを試しましたjsonb_array_elements(json -> 'members' -> 'players')->'id'
が、すべてではなく、比較されたプレーヤー ID のいずれかがチームで利用可能であるという結果しか得られませんでした。