Pernyataan Masalah
Penormalan pangkalan data boleh meningkatkan pengurusan data, tetapi kadangkala batasan struktur menghalang pelaksanaan. Soalan ini meneroka kaedah untuk mengaitkan nilai dipisahkan koma dalam satu jadual dengan nilai daripada jadual kedua apabila normalisasi bukan pilihan.
Penyelesaian
Dalam senario yang disediakan , kami berhasrat untuk menggabungkan nilai dalam lajur 'forDepts' jadual Nota dengan nama sepadannya daripada Kedudukan meja. Output yang dijangkakan ialah senarai ID nota ('nid') dengan nama jabatan yang berkaitan digabungkan dan dipisahkan dengan koma.
Untuk mencapai ini, kita boleh menggunakan fungsi FIND_IN_SET() dan fungsi GROUP_CONCAT(). Berikut ialah pertanyaan SQL:
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
Penjelasan
Nota Tambahan
Kod PHP yang disediakan kelihatan hanya mengeluarkan nilai pertama daripada lajur 'forDepts'. Ini mungkin disebabkan oleh LEFT JOIN yang digunakan dalam pertanyaan. Untuk mendapatkan semula semua nilai, pertimbangkan untuk menggunakan INNER JOIN sebaliknya.
Pendekatan ini boleh digunakan dalam situasi di mana data disimpan dalam format dipisahkan koma dan anda perlu mengaitkannya dengan nilai lain tanpa menstruktur semula pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Dua Jadual dengan Nilai Dipisahkan Koma Menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!