JSONB-запрос с вложенными объектами в массиве
Я использую PostgreSQL 9.4 с таблицейteams
содержащийjsonb
названный столбецjson
, Я ищу запрос, где я могу получить все команды, в которых есть игроки3
, 4
а также7
в их массиве игроков.
Таблица содержит две строки со следующимиjson
данные:
Первый ряд:
{
"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"
}
]
}
}
второй ряд:
{
"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'
и сравнивать их, но все, что мне удалось сделать, это результат, когда в команде был доступен любой из сравниваемых идентификаторов игроков, а не все.