Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Objek JSON Bersarang daripada Jadual Hubungan dalam MySQL Menggunakan Fungsi JSON Asli?
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`) );
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');
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" } ] } ]
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;
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!