Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Jadual dengan Nilai Dipisahkan Koma dalam Lajur?
Penormalan pangkalan data adalah penting untuk pengurusan data yang cekap, tetapi kadangkala, projek mungkin memerlukan pengendalian data lama dalam bentuk tidak dinormalkan. Artikel ini meneroka teknik untuk mencantumkan dua jadual dengan nilai dipisahkan koma dalam lajur tertentu.
Senario:
Andaikan kita mempunyai dua jadual:
Jadual Nota:
Jadual Jawatan:
Matlamat kami adalah untuk menyertai jadual ini dan mengaitkan lajur forDepts dengan nilai daripada jadual Positions, mencipta lajur baharu dengan nama kedudukan yang dipisahkan koma.
Menggunakan Penyelesaian CONCAT_WS:
SELECT n.nid, CONCAT_WS(', ', p.name) AS DepartmentName FROM Notes n JOIN Positions p ON n.forDepts = p.id
Walau bagaimanapun, pendekatan ini hanya akan mendapatkan semula padanan pertama untuk setiap ID jabatan, bukan semua jabatan yang sepadan.
Penyelesaian Menggunakan FIND_IN_SET:
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) AS DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
Fungsi FIND_IN_SET menyemak sama ada nilai terdapat dalam rentetan dipisahkan koma. Dengan menggunakannya dalam keadaan JOIN, kami memastikan bahawa semua kedudukan sepadan disertakan. Fungsi GROUP_CONCAT menggabungkan nama kedudukan yang diambil, dipisahkan dengan koma.
Penyatuan Kod PHP:
Kod PHP yang diberikan boleh diubah suai untuk mendapatkan semula lajur DepartmentName yang dilanjutkan dengan menggantikan pertanyaan dalam pernyataan mysql_query dengan penyelesaian yang dicadangkan di atas. Ini akan membolehkan kod mengeksport nama kedudukan yang dipisahkan koma dengan betul.
Nota:
Walaupun sesuai untuk menormalkan pangkalan data, pengendalian data tidak dinormalkan kadangkala diperlukan. Teknik yang dibincangkan dalam artikel ini menyediakan penyelesaian untuk menggabungkan jadual dengan cekap dan mengagregat nilai yang dipisahkan koma dalam senario sedemikian.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual dengan Nilai Dipisahkan Koma dalam Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!