Rumah  >  Artikel  >  pangkalan data  >  Bagaimana Menggunakan GROUP_CONCAT dengan betul dengan LEFT JOIN dalam MySQL untuk Menggabungkan Penyelesaian setiap Tiket?

Bagaimana Menggunakan GROUP_CONCAT dengan betul dengan LEFT JOIN dalam MySQL untuk Menggabungkan Penyelesaian setiap Tiket?

Barbara Streisand
Barbara Streisandasal
2024-10-27 10:35:03542semak imbas

How to Correctly Use GROUP_CONCAT with LEFT JOIN in MySQL to Concatenate Solutions per Ticket?

MySQL GROUP_CONCAT dengan LEFT JOIN Isu dan Penyelesaian

Dalam MySQL, fungsi GROUP_CONCAT biasanya digunakan untuk menggabungkan rentetan daripada berbilang baris dalam kumpulan . Walau bagaimanapun, apabila menggunakan fungsi ini dengan LEFT JOIN, adalah mungkin untuk menghadapi situasi di mana berbilang baris digabungkan menjadi satu baris dan bukannya dipisahkan.

Pernyataan Masalah

Pertimbangkan senario berikut:

  • Dua jadual, "Tiket" dan "Penyelesaian," mewakili pangkalan data meja bantuan
  • Setiap tiket mempunyai satu atau lebih penyelesaian yang sepadan
  • Matlamat: Buat pertanyaan yang menggabungkan semua penyelesaian untuk setiap tiket

Pertanyaan yang digunakan:

<code class="SQL">SELECT Tickets.*, GROUP_CONCAT(Solutions.solution) AS CombinedSolutions
FROM Tickets
LEFT JOIN Solutions ON Tickets.id = Solutions.ticket_id
ORDER BY Tickets.id;</code>

Isu

Ini pertanyaan mengembalikan hanya satu baris, dengan maklumat tiket 1 dan kedua-dua entri penyelesaian tiket 1 dan tiket 2 digabungkan bersama.

Penyelesaian

Untuk menyelesaikan isu ini, gunakan subkueri atau jadual terbitan dalam pernyataan JOIN untuk mengumpulkan penyelesaian mengikut ID tiket:

Penyelesaian 1: Menggunakan Subquery

<code class="SQL">SELECT t.*,
          x.combinedsolutions
     FROM TICKETS t
LEFT JOIN (SELECT s.ticket_id,
                  GROUP_CONCAT(s.solution) AS combinedsolutions
             FROM SOLUTIONS s 
         GROUP BY s.ticket_id) x ON x.ticket_id = t.ticket_id</code>

Penyelesaian 2: Menggunakan Jadual Terbitan

<code class="SQL">SELECT t.*,
          (SELECT GROUP_CONCAT(s.solution)
             FROM SOLUTIONS s 
            WHERE s.ticket_id = t.ticket_id) AS combinedsolutions
     FROM TICKETS t</code>

Dengan mengumpulkan penyelesaian sebelum menyertai, pertanyaan kini mengembalikan baris berasingan untuk setiap tiket, dengan penyelesaian sepadannya digabungkan menjadi satu rentetan.

Atas ialah kandungan terperinci Bagaimana Menggunakan GROUP_CONCAT dengan betul dengan LEFT JOIN dalam MySQL untuk Menggabungkan Penyelesaian setiap Tiket?. 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