SQLite json_group_array()
funkce je agregační funkce, která vrací pole JSON složené ze všech hodnot v agregaci.
Jinými slovy, zkonstruuje pole z hodnot poskytnutých jeho argumentem.
Syntaxe
json_group_array(X)
Kde X
představuje prvek/prvky, ze kterých se bude výsledné pole skládat.
Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT json_group_array( "Fritz" );
Výsledek:
["Fritz"]
Vidíme, že bylo vráceno pole s hodnotou, kterou jsme poskytli.
Skutečná síla této funkce je však demonstrována ve scénářích, které využívají agregovaná data (jako v příkladech databáze níže). Koneckonců, mohli jsme použít json_array()
funkce pro výše uvedený příklad:
SELECT json_array( "Fritz" );
Výsledek:
["Fritz"]
Jak již bylo zmíněno, skutečná síla této funkce je v práci s agregovanými daty. Proto json_group_array()
se obvykle používá při dotazování na databázi.
Příklad databáze
Předpokládejme, že máme následující tabulku:
SELECT * FROM Pets;
Výsledek:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Vidíme, že existují tři sloupce a vidíme jejich názvy.
Můžeme použít json_group_array()
takhle:
SELECT json_group_array(TypeId)
FROM Pets;
Výsledek:
[3,1,2,4]
Zde jsem vytvořil pole, které se skládá ze všech TypeId
hodnoty.
Můžeme jít o krok dále a předat další funkci JSON jako argument funkci json_group_array()
.
Pokud bychom například chtěli vytvořit objekt JSON pro každý řádek v databázi, mohli bychom použít json_object()
fungovat na stole takto:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Výsledek:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
Pak můžeme použít json_group_array()
funkce poskytující vnější pole:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Výsledek:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]
Nyní všechny dokumenty JSON, které byly vytvořeny pomocí json_object()
jsou uzavřeny v poli, které bylo vytvořeno pomocí json_group_array()
.