Génération d'objets JSON imbriqués dans MySQL avec des fonctions JSON natives
Les fonctions JSON natives MySQL fournissent un mécanisme puissant pour travailler avec des données JSON dans la base de données . Lorsqu'il s'agit de tables relationnelles contenant des relations un-à-plusieurs, la génération d'objets JSON imbriqués peut s'avérer difficile. Dans cet article, nous explorerons comment obtenir des objets JSON imbriqués à l'aide des fonctions JSON natives de MySQL.
Le problème
Considérez le scénario suivant :
CREATE TABLE `parent_table` ( `id` int(11) NOT NULL, `desc` varchar(20) NOT NULL, PRIMARY KEY (`id`) ); CREATE TABLE `child_table` ( `id` int(11) NOT NULL, `parent_id` int(11) NOT NULL, `desc` varchar(20) NOT NULL, PRIMARY KEY (`id`,`parent_id`) );
insert `parent_table` values (1,'parent row 1'); insert `child_table` values (1,1,'child row 1'); insert `child_table` values (2,1,'child row 2');
Le but est de générer un document JSON qui ressemble au suivant :
[ { "id" : 1, "desc" : "parent row 1", "child_objects" : [{ "id" : 1, "parent_id" : 1, "desc" : "child row 1" }, { "id" : 2, "parent_id" : 1, "desc" : "child row 2" } ] } ]
La solution
La clé pour générer des objets JSON imbriqués réside dans la fonction GROUP_CONCAT. En combinant la fonction GROUP_CONCAT avec la fonction JSON_OBJECT, nous pouvons concaténer plusieurs objets JSON en un seul tableau.
Considérez la requête suivante :
select json_object( 'id',p.id ,'desc',p.`desc` ,'child_objects',(select CAST(CONCAT('[', GROUP_CONCAT( JSON_OBJECT( 'id',id,'parent_id',parent_id,'desc',`desc`)), ']') AS JSON) from child_table where parent_id = p.id) ) from parent_table p;
Cette requête génère l'objet JSON imbriqué souhaité en utilisez d’abord GROUP_CONCAT pour concaténer les objets JSON des lignes enfants dans un tableau JSON. Ensuite, la fonction CONCAT est utilisée pour placer le tableau JSON entre crochets et créer une chaîne JSON valide. Enfin, la fonction CAST convertit la chaîne en objet JSON.
Conclusion
En tirant parti des fonctions GROUP_CONCAT et JSON_OBJECT, nous pouvons générer des objets JSON imbriqués complexes à partir de tables relationnelles dans MySQL en utilisant les fonctions JSON natives. Cette fonctionnalité libère le potentiel de manipulation et d'échange efficaces de données à l'aide de JSON dans MySQL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!