Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Dua Jadual dengan Nilai Dipisahkan Koma Menggunakan SQL?

Bagaimana untuk Menyertai Dua Jadual dengan Nilai Dipisahkan Koma Menggunakan SQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-18 11:17:10976semak imbas

How to Join Two Tables with Comma-Separated Values Using SQL?

Sertai Dua Jadual dengan Nilai Dipisahkan Koma

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

  • Fungsi FIND_IN_SET() menyemak sama ada nilai hadir dalam rentetan yang dipisahkan dengan koma. Dalam kes ini, kami menggunakannya untuk menentukan sama ada ID jabatan daripada jadual Kedudukan ditemui dalam lajur 'forDepts'.
  • Klausa INNER JOIN memastikan bahawa hanya baris yang sepadan daripada kedua-dua jadual digabungkan.
  • Fungsi GROUP_CONCAT() menggabungkan nama jabatan yang sepadan, disusun mengikut ID mereka dan memisahkannya dengan koma.

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!

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