Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana Objek JSON Bersarang daripada Jadual Hubungan dalam MySQL Menggunakan Fungsi JSON Asli?

Bagaimana untuk Menjana Objek JSON Bersarang daripada Jadual Hubungan dalam MySQL Menggunakan Fungsi JSON Asli?

DDD
Lepaskan: 2024-12-01 21:50:13
asal
347 orang telah melayarinya

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

Menjana Objek JSON Bersarang dalam MySQL dengan Fungsi JSON Asli

Fungsi JSON asli MySQL menyediakan mekanisme yang berkuasa untuk bekerja dengan data JSON dalam pangkalan data . Apabila berurusan dengan jadual hubungan yang mengandungi perhubungan satu dengan banyak, menjana objek JSON bersarang boleh menjadi mencabar. Dalam artikel ini, kami akan meneroka cara untuk mencapai objek JSON bersarang menggunakan fungsi JSON asli MySQL.

Masalahnya

Pertimbangkan senario 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`)
);
Salin selepas log masuk
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

Matlamatnya adalah untuk menjana dokumen JSON yang menyerupai berikut:

[
    {
        "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

Kunci untuk menjana objek JSON bersarang terletak pada fungsi GROUP_CONCAT. Dengan menggabungkan fungsi GROUP_CONCAT dengan fungsi JSON_OBJECT, kami boleh menggabungkan berbilang objek JSON ke dalam tatasusunan tunggal.

Pertimbangkan pertanyaan berikut:

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 menjana objek JSON bersarang yang dikehendaki dengan mula-mula menggunakan GROUP_CONCAT untuk menggabungkan objek JSON untuk baris anak ke dalam tatasusunan JSON. Kemudian, fungsi CONCAT digunakan untuk membalut tatasusunan JSON dalam kurungan segi empat sama dan mencipta rentetan JSON yang sah. Akhir sekali, fungsi CAST menukar rentetan menjadi objek JSON.

Kesimpulan

Dengan memanfaatkan fungsi GROUP_CONCAT dan JSON_OBJECT, kita boleh menjana objek JSON bersarang kompleks daripada jadual hubungan dalam MySQL menggunakan fungsi JSON asli. Keupayaan ini membuka potensi untuk manipulasi dan pertukaran data yang cekap menggunakan JSON dalam MySQL.

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

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan