Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana JSON Bersarang daripada Jadual Hubungan dalam MySQL 5.7?

Bagaimana untuk Menjana JSON Bersarang daripada Jadual Hubungan dalam MySQL 5.7?

Patricia Arquette
Lepaskan: 2024-11-30 20:58:14
asal
662 orang telah melayarinya

How to Generate Nested JSON from Relational Tables in MySQL 5.7?

Menjana JSON Bersarang dengan Fungsi Asli MySQL

Masalah:

Menggunakan fungsi JSON MySQL 5.7.12, bagaimana anda boleh bina dokumen JSON dengan sub-objek terbenam daripada data dalam hubungan jadual?

Persediaan Pangkalan Data:

Pertimbangkan jadual berikut:

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');
Salin selepas log masuk

JSON yang Diingini Output:

[{
    "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"
        }
    ]
}]
Salin selepas log masuk

Penyelesaian:

Untuk menjana JSON bersarang yang dikehendaki, anda boleh menggunakan fungsi GROUP_CONCAT MySQL untuk menggabungkan berbilang baris daripada child_table ke dalam rentetan. Kemudian, balut rentetan dalam JSON_ARRAY untuk menukarnya kepada tatasusunan JSON.

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;
Salin selepas log masuk

Pertanyaan ini akan menjana dokumen JSON tepat seperti yang dinyatakan dalam output yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Menjana JSON Bersarang daripada Jadual Hubungan dalam MySQL 5.7?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan