SQLite json_group_array()
function to funkcja agregująca, która zwraca tablicę JSON składającą się ze wszystkich wartości w agregacji.
Innymi słowy, tworzy tablicę z wartości dostarczonych przez jej argument.
Składnia
json_group_array(X)
Gdzie X
reprezentuje element/y, z których będzie się składać wynikowa tablica.
Przykład
Oto prosty przykład do zademonstrowania:
SELECT json_group_array( "Fritz" );
Wynik:
["Fritz"]
Widzimy, że została zwrócona tablica z podaną przez nas wartością.
Jednak prawdziwa moc tej funkcji jest pokazana w scenariuszach wykorzystujących dane zagregowane (jak w przykładach baz danych poniżej). W końcu mogliśmy po prostu użyć json_array()
funkcja dla powyższego przykładu:
SELECT json_array( "Fritz" );
Wynik:
["Fritz"]
Jak wspomniano, prawdziwa siła tej funkcji polega na przetwarzaniu danych zagregowanych. Dlatego json_group_array()
będzie zwykle używany podczas wysyłania zapytań do bazy danych.
Przykład bazy danych
Załóżmy, że mamy następującą tabelę:
SELECT * FROM Pets;
Wynik:
+-------+---------+--------+ | PetId | PetName | TypeId | +-------+---------+--------+ | 1 | Homer | 3 | | 2 | Yelp | 1 | | 3 | Fluff | 2 | | 4 | Brush | 4 | +-------+---------+--------+
Widzimy, że są trzy kolumny i widzimy ich nazwy.
Możemy użyć json_group_array()
tak:
SELECT json_group_array(TypeId)
FROM Pets;
Wynik:
[3,1,2,4]
Tutaj utworzyłem tablicę, która składa się ze wszystkich TypeId
wartości.
Możemy pójść o krok dalej i przekazać kolejną funkcję JSON jako argument do json_group_array()
.
Na przykład, jeśli chcielibyśmy stworzyć obiekt JSON dla każdego wiersza w bazie danych, moglibyśmy użyć json_object()
funkcja na stole w ten sposób:
SELECT json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
FROM Pets;
Wynik:
{"PetId":1,"PetName":"Homer","TypeId":3} {"PetId":2,"PetName":"Yelp","TypeId":1} {"PetId":3,"PetName":"Fluff","TypeId":2} {"PetId":4,"PetName":"Brush","TypeId":4}
Następnie możemy użyć json_group_array()
funkcja zapewniająca zewnętrzną tablicę:
SELECT json_group_array(
json_object(
'PetId', PetId,
'PetName', PetName,
'TypeId', TypeId
)
)
FROM Pets;
Wynik:
[{"PetId":1,"PetName":"Homer","TypeId":3},{"PetId":2,"PetName":"Yelp","TypeId":1},{"PetId":3,"PetName":"Fluff","TypeId":2},{"PetId":4,"PetName":"Brush","TypeId":4}]
Teraz wszystkie dokumenty JSON, które zostały utworzone przez json_object()
są zawarte w tablicy, która została utworzona przez json_group_array()
.