Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan Semua Rekod Pekerja untuk Organisasi Tertentu dalam Satu Pertanyaan SQL?
Mengambil Berbilang Rekod Pekerja yang Dikaitkan dengan Organisasi dalam Set Keputusan Tunggal
Tugas di tangan melibatkan pengambilan semua butiran organisasi tertentu bersama dengan nama pertama pekerjanya. Untuk menangani cabaran ini, seseorang mesti mempertimbangkan pendekatan khusus vendor pangkalan data, kerana tiada penyelesaian universal wujud dalam SQL-92 atau SQL-99.
Dalam kes MySQL, fungsi GROUP_CONCAT membolehkan pengambilan semula yang cekap bagi nilai yang digabungkan. Pertanyaan yang menggunakan fungsi ini mungkin menyerupai yang berikut:
SELECT o.ID, o.Address, o.OtherDetails, GROUP_CONCAT( CONCAT(e.firstname, ' ', e.lastname) ) AS Employees FROM employees e JOIN organization o ON o.org_id=e.org_id GROUP BY o.org_id;
PostgreSQL 9.0 menyediakan penyelesaian yang sama mudah dengan fungsi STRING_AGG:
SELECT o.ID, o.Address, o.OtherDetails, STRING_AGG( (e.firstname || ' ' || e.lastname), ', ' ) AS Employees FROM employees e JOIN organization o ON o.org_id=e.org_id GROUP BY o.org_id;
Untuk versi PostgreSQL sebelum 9.0, CREATE Perintah AGGREGATE membenarkan fungsi agregat tersuai takrifan.
Oracle menggunakan LISTAGG untuk kefungsian yang serupa, manakala MS SQL Server menggunakan STRING_AGG.
Jika tiada fungsi penggabungan kumpulan terbina dalam, pilihan sandaran melibatkan mencipta prosedur tersimpan yang menerima ID organisasi sebagai inputnya dan mengembalikan nama pekerja yang digabungkan. Prosedur tersimpan ini kemudiannya boleh digunakan dalam pertanyaan:
SELECT o.ID, o.Address, o.OtherDetails, MY_CUSTOM_GROUP_CONCAT_PROCEDURE( o.ID ) AS Employees FROM organization o;
Dengan menggunakan pendekatan khusus vendor ini, adalah mungkin untuk mendapatkan beberapa rekod pekerja yang berkaitan dengan satu organisasi dalam satu set keputusan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Semua Rekod Pekerja untuk Organisasi Tertentu dalam Satu Pertanyaan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!