SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite JSON_GROUP_ARRAY()

SQLite json_group_array() function è una funzione aggregata che restituisce una matrice JSON composta da tutti i valori nell'aggregazione.

In altre parole, costruisce un array dai valori forniti dal suo argomento.

Sintassi

json_group_array(X)

Dove X rappresenta l'elemento o gli elementi di cui sarà composto l'array risultante.

Esempio

Ecco un semplice esempio da dimostrare:

SELECT json_group_array( "Fritz" );

Risultato:

["Fritz"]

Possiamo vedere che è stato restituito un array, con il valore che abbiamo fornito.

Tuttavia, la vera potenza di questa funzione è dimostrata in scenari che utilizzano dati aggregati (come negli esempi di database seguenti). Dopotutto, avremmo potuto semplicemente usare json_array() funzione per l'esempio precedente:

SELECT json_array( "Fritz" );

Risultato:

["Fritz"]

Come accennato, il vero potere di questa funzione sta nel trattare i dati aggregati. Pertanto, json_group_array() in genere verrebbe utilizzato quando si esegue una query su un database.

Esempio di database

Supponiamo di avere la seguente tabella:

SELECT * FROM Pets;

Risultato:

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

Possiamo vedere che ci sono tre colonne e possiamo vedere i loro nomi.

Possiamo usare json_group_array() così:

SELECT json_group_array(TypeId)
FROM Pets;

Risultato:

[3,1,2,4]

Qui, ho creato un array che consiste in tutto il TypeId valori.

Possiamo fare un ulteriore passo avanti e passare un'altra funzione JSON come argomento a json_group_array() .

Ad esempio, se volessimo produrre un oggetto JSON per ogni riga nel database, potremmo usare json_object() funzione sul tavolo in questo modo:

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

Risultato:

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

Possiamo quindi utilizzare json_group_array() funzione per fornire un array esterno:

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

Risultato:

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

Ora, tutti i documenti JSON prodotti da json_object() sono racchiusi in un array prodotto da json_group_array() .