Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Jadual dengan Medan Sertaan Dipisahkan Koma?

Bagaimana untuk Menyertai Jadual dengan Medan Sertaan Dipisahkan Koma?

Patricia Arquette
Patricia Arquetteasal
2024-11-10 22:23:02297semak imbas

How to Join Tables with Comma-Separated Join Fields?

Menyertai Jadual dengan Medan Gabungan Dipisahkan Koma

Dalam pengurusan pangkalan data, selalunya perlu untuk menyertai jadual berdasarkan medan yang mengandungi berbilang nilai yang dipisahkan koma. Ini memberikan cabaran apabila melakukan pertanyaan yang mengecualikan medan gabungan dan sebaliknya memilih nilai yang sepadan daripada jadual yang berkaitan.

Dalam senario ini, kami mempunyai dua jadual, kategori dan filem, di mana lajur kategori dalam jadual filem mengandungi senarai ID kategori yang dipisahkan koma. Matlamat kami adalah untuk melaksanakan pertanyaan yang mendapatkan semula kategori bagi setiap filem dalam format tatasusunan.

Penyelesaian

Satu cara untuk mencapai ini adalah dengan menggunakan operasi JOIN dengan subquery yang menggunakan fungsi find_in_set(). Fungsi find_in_set() menyemak sama ada nilai yang ditentukan wujud dalam rentetan yang dipisahkan koma.

Pertanyaan berikut menunjukkan cara untuk menyertai jadual filem dan kategori berdasarkan ID kategori yang dipisahkan koma:

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

Penjelasan

  • Fungsi find_in_set() digunakan dalam klausa JOIN untuk mencari kategori biasa antara filem dan jadual kategori.
  • The Fungsi group_concat() digunakan untuk menggabungkan nama kategori yang dipilih menjadi rentetan tunggal untuk setiap filem.
  • Kumpulan mengikut klausa mengumpulkan hasil mengikut ID filem untuk memastikan setiap filem mempunyai tatasusunan kategori tersendiri.

Output

Output pertanyaan ialah jadual dengan dua lajur: id (ID filem) dan kategori (susunan nama kategori). Sebagai contoh, output mungkin kelihatan seperti ini:

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

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