MySQL: Menggunakan GROUP_CONCAT dengan LEFT JOIN untuk Mendapatkan Data Komprehensif
Pertanyaan pangkalan data terkini yang menggunakan fungsi "GROUP_CONCAT" MySQL menghadapi masalah apabila menyertai berbilang jadual. Hasil yang dimaksudkan adalah untuk mendapatkan semula senarai tiket dan penyelesaiannya yang sepadan, tetapi pertanyaan itu mengembalikan hasil yang tidak dijangka.
Pernyataan SELECT yang disediakan cuba untuk mendapatkan maklumat tiket bersama-sama dengan rentetan penyelesaian yang digabungkan menggunakan LEFT JOIN antara jadual "Tiket" dan "Penyelesaian". Walau bagaimanapun, keputusannya tidak memuaskan, dengan pertanyaan mengembalikan satu baris yang mengandungi butiran dan penyelesaian tiket pertama untuk kedua-dua tiket.
Untuk menyelesaikan isu ini, pertanyaan alternatif boleh digunakan, menggunakan subquery untuk melaksanakan GROUP_CONCAT operasi pada jadual "Penyelesaian". Berikut ialah pertanyaan yang dikemas kini:
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
Dalam pertanyaan ini, subkueri digunakan untuk mengira penyelesaian bercantum untuk setiap tiket. Hasil subkueri kemudiannya dicantumkan ke jadual "Tiket" menggunakan LEFT JOIN. Ini memastikan bahawa setiap tiket dikembalikan dengan penyelesaian yang sepadan, seperti yang dimaksudkan.
Sebagai alternatif, pertanyaan berikut boleh mencapai hasil yang sama menggunakan subkueri bersarang:
SELECT t.*, (SELECT GROUP_CONCAT(s.solution) FROM SOLUTIONS s WHERE s.ticket_id = t.ticket_id) AS combinedsolutions FROM TICKETS t
Kedua-dua pertanyaan yang disemak ini berjaya mengembalikan hasil yang diingini, menyediakan senarai tiket yang komprehensif dengan penyelesaian yang berkaitan.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan GROUP_CONCAT dengan LEFT JOIN untuk Mendapatkan Data Komprehensif dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!