Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan Semua Rekod Pekerja untuk Organisasi Tertentu dalam Satu Pertanyaan SQL?

Bagaimanakah Saya Boleh Dapatkan Semua Rekod Pekerja untuk Organisasi Tertentu dalam Satu Pertanyaan SQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-19 09:15:10972semak imbas

How Can I Retrieve All Employee Records for a Specific Organization in a Single SQL Query?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn