Perhubungan Satu-dengan-Banyak sebagai Baris Unik dengan Senarai Dipisahkan Koma Menggunakan Informix SQL
Serupa dengan soalan yang dikemukakan pada Stack Overflow, ini artikel menyediakan penyelesaian Informix SQL untuk memaparkan hubungan satu-ke-banyak sebagai satu baris unik dengan dipisahkan koma senarai.
Data Awal
id codes 63592 PELL 58640 SUBL 58640 USBL 73571 PELL 73571 USBL 73571 SUBL
Output yang Diingini
id codes 63592 PELL 58640 SUBL, USBL 73571 PELL, USBL, SUBL
Agregat Ditentukan Pengguna Tersuai
Untuk mencapai output yang diingini, adat agregat takrif pengguna (UDA) diperlukan. Di bawah ialah contoh UDA bernama group_concat:
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; CREATE AGGREGATE group_concat WITH (INIT = gc_init, ITER = gc_iter, COMBINE = gc_comb, FINAL = gc_fini);
Query with Grouped Concatenation
Menggunakan group_concat UDA pada data asal, kita boleh mengumpulkan mengikut id unik dan agregat kod menggunakan tersuai UDA:
SELECT id, group_concat(codes) FROM anonymous_table GROUP BY id;
Output
58640 SUBL,USBL 63592 PELL 73571 PELL,SUBL,USBL
Nota Tambahan
DROP AGGREGATE IF EXISTS group_concat; DROP FUNCTION IF EXISTS gc_fini; DROP FUNCTION IF EXISTS gc_init; DROP FUNCTION IF EXISTS gc_iter; DROP FUNCTION IF EXISTS gc_comb;
Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Hubungan Satu-dengan-Banyak sebagai Senarai Dipisahkan Koma dalam Informix SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!