Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Jadual dengan Nilai Dipisahkan Koma dalam Lajur?

Bagaimana untuk Menyertai Jadual dengan Nilai Dipisahkan Koma dalam Lajur?

Linda Hamilton
Linda Hamiltonasal
2024-12-08 12:00:21385semak imbas

How to Join Tables with Comma-Separated Values in a Column?

Menyertai Jadual dengan Nilai Dipisahkan Koma

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:

    • nid: Nota ID
    • forDepts: ID jabatan yang dipisahkan koma
  • Jadual Jawatan:

    • id: ID Kedudukan
    • nama: Jawatan name

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!

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