Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Rekod Berkaitan daripada Berbilang Jadual Pangkalan Data dalam Satu Pertanyaan?

Bagaimana untuk Mendapatkan Rekod Berkaitan daripada Berbilang Jadual Pangkalan Data dalam Satu Pertanyaan?

Linda Hamilton
Lepaskan: 2024-12-29 19:18:11
asal
604 orang telah melayarinya

How to Retrieve Related Records from Multiple Database Tables in a Single Query?

Mendapatkan Berbilang Rekod Berdasarkan Perhubungan

Apabila berurusan dengan jadual pangkalan data dengan perhubungan, tugas biasa adalah untuk mendapatkan maklumat daripada berbilang jadual berdasarkan hubungan tertentu. Sebagai contoh, pertimbangkan dua jadual: Organisasi dan Pekerja, di mana satu Organisasi boleh mempunyai berbilang Pekerja. Matlamatnya ialah untuk mendapatkan semula semua maklumat tentang organisasi tertentu, termasuk nama pertama semua pekerjanya, dalam satu set rekod.

Penyelesaian Khusus Pangkalan Data

The pendekatan yang sesuai untuk tugas ini berbeza-beza bergantung kepada sistem pangkalan data yang digunakan. Sesetengah sistem pangkalan data popular menawarkan fungsi atau ciri khusus yang boleh memudahkan Penggabungan Kumpulan, proses menggabungkan berbilang nilai ke dalam satu rentetan:

  • MySQL: Gunakan fungsi GROUP_CONCAT untuk menggabungkan nama pertama pekerja berdasarkan Organisasi ID.
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
Salin selepas log masuk
  • PostgreSQL: PostgreSQl 9.0 menyediakan fungsi STRING_AGG untuk Group Concatenation, yang boleh digunakan untuk menambahkan nama pertama pekerja dengan koma- angkasa lepas pembatas.
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
Salin selepas log masuk
  • Oracle: Oracle menawarkan fungsi LISTAGG untuk menggabungkan nilai.
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
Salin selepas log masuk
  • MS SQL Server: MS SQL Server 2017 dan kemudiannya memperkenalkan Fungsi STRING_AGG untuk Penggabungan Kumpulan.
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
Salin selepas log masuk

Penyelesaian Fallback

Dalam sistem pangkalan data yang kekurangan fungsi Penggabungan Kumpulan asli atau untuk versi pangkalan data yang disokong lebih lama, sandarkan penyelesaian boleh digunakan:

  • Buat prosedur tersimpan yang menerima ID Organisasi dan mengembalikan nama pekerja yang digabungkan. Integrasikan prosedur tersimpan ini ke 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

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Berkaitan daripada Berbilang Jadual Pangkalan Data dalam Satu Pertanyaan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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