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
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!