Maison > base de données > tutoriel mysql > Comment générer des objets JSON imbriqués à partir de tables relationnelles dans MySQL à l'aide de fonctions JSON natives ?

Comment générer des objets JSON imbriqués à partir de tables relationnelles dans MySQL à l'aide de fonctions JSON natives ?

DDD
Libérer: 2024-12-01 21:50:13
original
242 Les gens l'ont consulté

How to Generate Nested JSON Objects from Relational Tables in MySQL Using Native JSON Functions?

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`)
);
Copier après la connexion
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');
Copier après la connexion

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"
            }
        ]
    }
]
Copier après la connexion

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal