Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mendapatkan Berbilang Rekod Berkaitan dalam Pangkalan Data SQL?
Cara Mendapatkan Berbilang Rekod Berkaitan dengan Rekod Tunggal
Dalam pengurusan pangkalan data, selalunya perlu mengambil data daripada berbilang jadual yang dihubungkan melalui perhubungan. Artikel ini menunjukkan kaedah yang cekap untuk mendapatkan semula semua maklumat tentang organisasi tertentu serta nama pertama pekerjanya.
Konsep mendapatkan berbilang rekod berkaitan memerlukan penggunaan penggabungan kumpulan, yang tidak diseragamkan dalam SQL -92 atau SQL-99. Oleh itu, penyelesaian khusus pangkalan data adalah perlu.
MySQL
MySQL menyediakan fungsi GROUP_CONCAT untuk penyatuan kumpulan. Untuk mendapatkan semula data yang dikehendaki, laksanakan pertanyaan berikut:
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
PostgreSQL
PostgreSQL 9.0 memperkenalkan STRING_AGG fungsi:
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
Oracle
Oracle menyediakan LISTAGG untuk penyatuan kumpulan:
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
MS SQL Server
Sama seperti PostgreSQL, MS SQL Server menggunakan STRING_AGG untuk kumpulan penggabungan:
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 Sandaran
Untuk versi pangkalan data yang lebih lama atau pangkalan data tidak patuh, kaedah sandaran wujud:
select o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) as Employees from organization o
Dengan melaksanakan penyelesaian khusus pangkalan data ini atau menggunakan kaedah sandaran, anda boleh mendapatkan semula maklumat yang diingini dengan cekap dan tepat .
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mendapatkan Berbilang Rekod Berkaitan dalam Pangkalan Data SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!