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
Lepaskan: 2024-12-19 09:15:10
asal
1029 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan