SQLite
 sql >> Base de données >  >> RDS >> SQLite

SQLite JSON_GROUP_ARRAY()

Le SQLite json_group_array() La fonction est une fonction d'agrégation qui renvoie un tableau JSON composé de toutes les valeurs de l'agrégation.

En d'autres termes, il construit un tableau à partir des valeurs fournies par son argument.

Syntaxe

json_group_array(X)

X représente le ou les éléments dont sera composé le tableau résultant.

Exemple

Voici un exemple simple pour illustrer :

SELECT json_group_array( "Fritz" );

Résultat :

["Fritz"]

Nous pouvons voir qu'un tableau a été renvoyé, avec la valeur que nous avons fournie.

Cependant, la véritable puissance de cette fonction est démontrée dans des scénarios qui utilisent des données agrégées (comme dans les exemples de base de données ci-dessous). Après tout, nous aurions pu simplement utiliser le json_array() fonction pour l'exemple ci-dessus :

SELECT json_array( "Fritz" );

Résultat :

["Fritz"]

Comme mentionné, la véritable puissance de cette fonction réside dans le traitement des données agrégées. Par conséquent, json_group_array() serait généralement utilisé lors de l'interrogation d'une base de données.

Exemple de base de données

Supposons que nous ayons le tableau suivant :

SELECT * FROM Pets;

Résultat :

+-------+---------+--------+
| PetId | PetName | TypeId |
+-------+---------+--------+
| 1     | Homer   | 3      |
| 2     | Yelp    | 1      |
| 3     | Fluff   | 2      |
| 4     | Brush   | 4      |
+-------+---------+--------+

Nous pouvons voir qu'il y a trois colonnes, et nous pouvons voir leurs noms.

Nous pouvons utiliser le json_group_array() comme ceci :

SELECT json_group_array(TypeId)
FROM Pets;

Résultat :

[3,1,2,4]

Ici, j'ai créé un tableau composé de tous les TypeId valeurs.

Nous pouvons aller plus loin et passer une autre fonction JSON comme argument à json_group_array() .

Par exemple, si nous voulions produire un objet JSON pour chaque ligne de la base de données, nous pourrions utiliser le json_object() fonction sur la table comme ceci :

SELECT json_object( 
    'PetId', PetId, 
    'PetName', PetName,
    'TypeId', TypeId 
    )
FROM Pets;

Résultat :

{"PetId":1,"PetName":"Homer","TypeId":3}
{"PetId":2,"PetName":"Yelp","TypeId":1}
{"PetId":3,"PetName":"Fluff","TypeId":2}
{"PetId":4,"PetName":"Brush","TypeId":4}

Nous pouvons alors utiliser le json_group_array() fonction pour fournir un tableau externe :

SELECT json_group_array( 
        json_object(
        'PetId', PetId, 
        'PetName', PetName,
        'TypeId', TypeId 
        )
    )
FROM Pets;

Résultat :

[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]

Maintenant, tous les documents JSON qui ont été produits par json_object() sont inclus dans un tableau qui a été produit par json_group_array() .