Mengambil semula Rekod Berkaitan dalam Satu Pertanyaan Tunggal
Dalam bidang pangkalan data hubungan, selalunya perlu menanyakan berbilang rekod daripada jadual berbeza yang berkongsi sebuah perhubungan. Senario biasa ialah mendapatkan semula semua maklumat tentang organisasi tertentu bersama-sama dengan nama pertama semua pekerjanya.
Untuk mencapai matlamat ini, kami boleh memanfaatkan pelbagai teknik khusus pangkalan data, seperti yang diterangkan di bawah:
MySQL dan PostgreSQL:
Menggunakan terbina dalam Fungsi GROUP_CONCAT dalam MySQL atau string_agg() dalam PostgreSQL, kita boleh mengagregatkan semua nama pertama pekerja yang berkaitan dengan organisasi tertentu dan menggabungkannya menjadi satu rentetan:
SELECT o.ID, o.Address, o.OtherDetails, GROUP_CONCAT(e.firstname) AS Employees FROM organization AS o JOIN employee AS e ON o.org_id = e.org_id GROUP BY o.org_id;
PostgreSQL 9.0 dan Kemudian:
PostgreSQL 9.0 dan kemudiannya memperkenalkan Fungsi STRING_AGG, yang membolehkan lebih fleksibiliti dalam penggabungan:
SELECT o.ID, o.Address, o.OtherDetails, STRING_AGG(e.firstname || ' ' || e.lastname, ', ') AS Employees FROM organization AS o JOIN employee AS e ON o.org_id = e.org_id GROUP BY o.org_id;
Oracle:
Oracle menyediakan fungsi LISTAGG untuk tujuan ini:
SELECT o.ID, o.Address, o.OtherDetails, LISTAGG(e.firstname, ', ') AS Employees FROM organization AS o JOIN employee AS e ON o.org_id = e.org_id GROUP BY o.org_id;
MS SQL Server:
MS SQL Server menawarkan fungsi STRING_AGG:
SELECT o.ID, o.Address, o.OtherDetails, STRING_AGG(e.firstname, ', ') AS Employees FROM organization AS o JOIN employee AS e ON o.org_id = e.org_id GROUP BY o.org_id;
Penyelesaian Fallback untuk Pangkalan Data Lain:
Jika pangkalan data anda tidak menyokong mana-mana fungsi terbina dalam ini, anda boleh memilih untuk penyelesaian sandaran dengan mencipta prosedur tersimpan yang mengambil ID organisasi sebagai input dan menggabungkan nama pekerja sewajarnya:
SELECT o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE(o.ID) AS Employees FROM organization AS o;
Dengan menggunakan teknik ini, anda boleh mendapatkan semula berbilang rekod dengan cekap daripada jadual berkaitan dan membentangkannya dalam bentuk yang disatukan, menghapuskan keperluan untuk berbilang pertanyaan atau pemasangan data baris demi baris.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Berkaitan daripada Jadual Pangkalan Data Berbeza dalam Satu Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!