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

Barbara Streisand
Lepaskan: 2024-10-27 10:35:03
asal
541 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!