Mendapatkan Berbilang Rekod Berdasarkan Perhubungan
Apabila berurusan dengan jadual pangkalan data dengan perhubungan, tugas biasa adalah untuk mendapatkan maklumat daripada berbilang jadual berdasarkan hubungan tertentu. Sebagai contoh, pertimbangkan dua jadual: Organisasi dan Pekerja, di mana satu Organisasi boleh mempunyai berbilang Pekerja. Matlamatnya ialah untuk mendapatkan semula semua maklumat tentang organisasi tertentu, termasuk nama pertama semua pekerjanya, dalam satu set rekod.
Penyelesaian Khusus Pangkalan Data
The pendekatan yang sesuai untuk tugas ini berbeza-beza bergantung kepada sistem pangkalan data yang digunakan. Sesetengah sistem pangkalan data popular menawarkan fungsi atau ciri khusus yang boleh memudahkan Penggabungan Kumpulan, proses menggabungkan berbilang nilai ke dalam satu rentetan:
select o.ID, o.Address, o.OtherDetails, GROUP_CONCAT( concat(e.firstname, ' ', e.lastname) ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
select o.ID, o.Address, o.OtherDetails, STRING_AGG( (e.firstname || ' ' || e.lastname), ', ' ) as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
select o.ID, o.Address, o.OtherDetails, LISTAGG((e.firstname || ' ' || e.lastname) ,',') as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
select o.ID, o.Address, o.OtherDetails, STRING_AGG((e.firstname || ' ' || e.lastname) ,',') as Employees from employees e inner join organization o on o.org_id=e.org_id group by o.org_id
Penyelesaian Fallback
Dalam sistem pangkalan data yang kekurangan fungsi Penggabungan Kumpulan asli atau untuk versi pangkalan data yang disokong lebih lama, sandarkan penyelesaian boleh digunakan:
select o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees from organization o
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Berkaitan daripada Berbilang Jadual Pangkalan Data dalam Satu Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!