Bagaimana untuk Menyertai Jadual dengan Medan Sertaan Dipisahkan Koma?

Patricia Arquette
Lepaskan: 2024-11-10 22:23:02
asal
213 orang telah melayarinya

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

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!

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