jsonb-Abfrage mit verschachtelten Objekten in einem Array
Ich verwende PostgreSQL 9.4 mit einer Tabelleteams
mit einemjsonb
Spalte mit dem Namenjson
. Ich suche nach einer Frage, wo ich alle Teams bekommen kann, die die Players @ habe3
, 4
und7
in ihrer Reihe von Spielern.
Die Tabelle enthält zwei Zeilen mit dem folgendenjson
Daten
Erste Reihe
{
"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"
}
]
}
}
zweite Reihe
{
"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"
}
]
}
}
Wie muss die Abfrage aussehen, um die gewünschte Teamliste zu erhalten? Ich habe eine Abfrage versucht, bei der ich aus den Mitgliederspielern ein Array erstellen würde.jsonb_array_elements(json -> 'members' -> 'players')->'id'
und vergleiche sie, aber alles, was ich erreichen konnte, ist ein Ergebnis, bei dem eine der verglichenen Spieler-IDs in einem Team verfügbar war, nicht alle.