Utiliser la clause SELECT
La clause SELECT est utilisée pour définir les éléments à retourner comme résultat d'une requête.
Le mot-clé SELECT peut être suivi par :
- Une expression simple ou conditionnelle pour retourner une valeur unique, un enregistrement ou un tableau :
SELECT expression
- Un bloc pour retourner des paires clé-valeur. Vous pouvez utiliser un identifiant simple ou une expression d'attribution pour créer une nouvelle clé :L'expression utilisée comme valeur peut être une expression simple ou conditionnelle.
SELECT { identifier, identifier = expression }
- Une sous-requête entre parenthèses pour retourner un résultat imbriqué comme résultat de la requête parente :
SELECT ( FROM identifier1 SELECT { identifier2, identifier3 } )
- Les identifiants, suivis par des sous-requêtes entre parenthèses, pour retourner le résultat de plusieurs requêtes en un enregistrement :
SELECT { identifier1 = (query1), identifier2 = (query2) }
Note InformationsRemarque : Lorsque vous utilisez un seul identifiant, il référence un élément dans l'entrée. Le nom du champ de sortie sera le même que le nom du champ d'entrée.
Avec une sous-requête produisant un tableau, vous pouvez spécifier un index afin de retourner un élément spécifique depuis le tableau. L'index doit être entre crochets après la parenthèse fermante de la sous-requête :
SELECT ( FROM identifier1 SELECT { identifier2 } )[index]
Par exemple, avec les données d'entrée suivantes :
{
"customers": [
{
"firstName": "John",
"lastName": "Smith",
"address": {
"street": "690 River St.",
"city": "Hanover, MA",
"zipcode": "02340"
},
"orders": [
{
"order_id": "abc-12345",
"items": [
{
"item_id": "97516848-jiargn",
"quantity": 2
}
]
}
]
},
{
"firstName": "Jane",
"lastName": "Doe",
"address": {
"street": "420 Green St.",
"city": "Boston, MA",
"zipcode": "02115"
},
"orders": [
{
"order_id": "def-12345",
"items": [
{
"item_id": "97516848-kftesn",
"quantity": 3
},
{
"item_id": "96946848-metasb",
"quantity": 1
}
]
}
]
}
]
}
Vous pouvez utiliser une clause SELECT avec deux requêtes imbriquées pour retourner un enregistrement contenant un tableau de noms de client·es et le premier élément du tableau d'identifiants d'éléments :
SELECT {
customers = (
FROM customers AS c
SELECT {
name = concatWith(" ", c.firstName, c.lastName),
c.address
}
),
items = (
FROM customers AS c UNNEST c.orders AS o UNNEST o.items AS i
SELECT {i.item_id}
)[0]
}
Cette requête retourne le résultat suivant :
{
"customers": [
{
"name": "John Smith",
"address": {
"street": "690 River St.",
"city": "Hanover, MA",
"zipcode": "02340"
}
},
{
"name": "Jane Doe",
"address": {
"street": "420 Green St.",
"city": "Boston, MA",
"zipcode": "02115"
}
}
],
"items": {
"item_id": "97516848-jiargn"
}
}