Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengubah Perhubungan Satu-dengan-Banyak dalam Informix SQL menjadi Baris Tunggal dengan Nilai Dipisahkan Koma?
Tunjukkan Hubungan Satu-dengan-Banyak sebagai Lajur untuk Baris Unik (ID & Senarai Terpisah)
Soalan ini menangani isu transformasi data daripada jadual dengan perhubungan satu-ke-banyak ke dalam jadual dengan setiap baris mengandungi ID unik dan satu lajur yang terdiri nilai dipisahkan koma yang mewakili banyak nilai. Data input distrukturkan seperti berikut:
id codes 63592 PELL 58640 SUBL 58640 USBL 73571 PELL 73571 USBL 73571 SUBL
Objektifnya adalah untuk mengubah data ini menjadi:
id codes 63592 PELL 58640 SUBL, USBL 73571 PELL, USBL, SUBL
Untuk mencapai transformasi ini menggunakan Informix SQL, agregat yang ditentukan pengguna (UDA ) boleh dibuat:
CREATE AGGREGATE group_concat WITH (INIT = gc_init, ITER = gc_iter, COMBINE = gc_comb, FINAL = gc_fini);
Di mana fungsi gc_init(), gc_iter(), gc_comb(), dan gc_fini() ditakrifkan seperti berikut:
CREATE FUNCTION gc_init(dummy VARCHAR(255)) RETURNING LVARCHAR; RETURN ''; END FUNCTION; CREATE FUNCTION gc_iter(result LVARCHAR, value VARCHAR(255)) RETURNING LVARCHAR; IF result = '' THEN RETURN TRIM(value); ELSE RETURN result || ',' || TRIM(value); END IF; END FUNCTION; CREATE FUNCTION gc_comb(partial1 LVARCHAR, partial2 LVARCHAR) RETURNING LVARCHAR; IF partial1 IS NULL OR partial1 = '' THEN RETURN partial2; ELIF partial2 IS NULL OR partial2 = '' THEN RETURN partial1; ELSE RETURN partial1 || ',' || partial2; END IF; END FUNCTION; CREATE FUNCTION gc_fini(final LVARCHAR) RETURNING LVARCHAR; RETURN final; END FUNCTION;
UDA ini kemudiannya boleh digunakan dalam pertanyaan untuk melakukan transformasi data:
SELECT id, group_concat(codes) FROM anonymous_table GROUP BY id;
Output ini pertanyaan akan menjadi data berubah yang dikehendaki.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Perhubungan Satu-dengan-Banyak dalam Informix SQL menjadi Baris Tunggal dengan Nilai Dipisahkan Koma?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!