問合せ内でのネストされたオブジェクトの指定
GraphQL問合せでネストしたオブジェクトとして指定することで、複数の表から詳細を取得できます。
たとえば、ドライバとチームの詳細を取得する場合は、次の関数内のGraphQL問合せに示すように、driverオブジェクト内にteamオブジェクトをネストできます:
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
driver {
id: driver_id
name
points
teamDetails: team {
teamId: team_id
teamName: name
teamPoints: points
}
}
');これにより、ドライバの詳細とそのチームを含む出力が生成されます:
DATA
--------------------------------------------------------------------------------
{
"id" : 101,
"name" : "Lando Norris",
"points" : 282,
"teamDetails" :
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
}
{
"id" : 102,
"name" : "Oscar Piastri",
"points" : 384,
"teamDetails" :
{
"teamId" : 301,
"teamName" : "McLaren Mercedes",
"teamPoints" : 666
}
}
..............
..............
20 rows selected.または、次のコードを使用して、チームに属するすべてのドライバの詳細を取得できます:
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
team {
id: team_id
name
points
drivers: driver {
driverId: driver_id
driverName: name
driverPoints: points
}
}
');この問合せでは、10チームとそのドライバの詳細に対応する10件のエントリが生成されます。
DATA
--------------------------------------------------------------------------------
{
"id" : 301,
"name" : "McLaren Mercedes",
"points" : 666,
"drivers" :
[
{
"driverId" : 101,
"driverName" : "Lando Norris",
"driverPoints" : 282
},
{
"driverId" : 102,
"driverName" : "Oscar Piastri",
"driverPoints" : 384
}
]
}
{
"id" : 302,
"name" : "Ferrari",
"points" : 652,
"drivers" :
[
{
"driverId" : 103,
"driverName" : "Charles Leclerc",
"driverPoints" : 312
},
{
"driverId" : 104,
"driverName" : "Carlos Sainz Jr.",
"driverPoints" : 340
}
]
}
.................
.................
10 rows selected.