Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menyertai Jadual dengan Medan Sertaan Dipisahkan Koma: Penyelesaian SQL?

Bagaimana untuk Menyertai Jadual dengan Medan Sertaan Dipisahkan Koma: Penyelesaian SQL?

Linda Hamilton
Linda Hamiltonasal
2024-11-21 06:34:16189semak imbas

How to Join Tables with Comma-Separated Join Fields: A SQL Solution?

Menyertai Jadual dengan Medan Gabungan Dipisahkan Koma

Apabila menyepadukan data daripada berbilang jadual, mungkin perlu melakukan cantuman pada medan yang mengandungi senarai yang dipisahkan koma. Ini boleh menimbulkan cabaran untuk kaedah gabungan tradisional. Pertimbangkan senario berikut:

Senario:

Terdapat dua jadual, kategori dan filem. Jadual kategori mengandungi kategori dengan ID dan nama unik. Jadual filem termasuk lajur kategori yang menyimpan berbilang ID kategori sebagai senarai dipisahkan koma. Tugasnya ialah untuk menyertai jadual ini, tidak termasuk lajur kategori daripada jadual filem dan sebaliknya memilih nama kategori yang sepadan daripada jadual kategori ke dalam tatasusunan.

Penyelesaian:

Untuk mengatasi cabaran ini, pengubahsuaian kepada sintaks gabungan standard boleh digunakan:

select
    m.id,
    group_concat(c.name)
from
    movies m
    join categories c on find_in_set(c.id, m.categories)
group by
    m.id

Dalam pertanyaan ini, fungsi find_in_set() digunakan dalam keadaan gabungan. Fungsi ini menyemak sama ada ID kategori daripada jadual kategori wujud dalam senarai ID kategori yang dipisahkan koma dalam jadual filem.

Fungsi group_concat() digunakan dalam klausa SELECT untuk menggabungkan semua nama kategori yang sepadan ke dalam tatasusunan. Kumpulan mengikut klausa memastikan bahawa data dikumpulkan mengikut ID filem, menghasilkan satu baris untuk setiap filem dengan nama kategori yang berkaitan.

Contoh:

Pertimbangkan sampel disediakan dalam soalan:

Kategori jadual:

id name
1 Action
2 Comedy
4 Drama
5 Dance

Filem jadual:

id categories
1 2,4
2 1,4
4 3,5

Menjalankan yang diubah suai join query akan menghasilkan output berikut:

Output jadual:

id categories
1 Comedy,Drama
2 Action,Drama
4 Other,Dance

Dalam keputusan ini, lajur kategori daripada jadual filem telah dikecualikan dan yang sepadan nama kategori daripada jadual kategori telah dipilih ke dalam tatasusunan untuk setiap filem.

Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual dengan Medan Sertaan Dipisahkan Koma: Penyelesaian 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