Menjana Senarai Dipisahkan Koma: Pendekatan SQL
Membentangkan data agregat dengan cekap adalah penting dalam pengurusan pangkalan data. Ini selalunya melibatkan mencipta senarai yang dipisahkan koma. Mari kita periksa cara untuk mencapai ini menggunakan satu pertanyaan SQL, memfokuskan pada sistem pangkalan data yang berbeza. Kami akan menggunakan skema pangkalan data dengan jadual Applications
, Resources
dan ApplicationsResources
. Matlamatnya adalah untuk memaparkan nama setiap sumber bersama senarai aplikasi yang dipisahkan koma untuk aplikasinya.
Penyelesaian Satu Pertanyaan Dioptimumkan
Untuk mengelakkan isu prestasi yang dikaitkan dengan berbilang pertanyaan, satu pertanyaan ialah pendekatan yang paling berkesan. Ini melibatkan penggabungan jadual yang berkaitan dan menggunakan fungsi pengagregatan rentetan yang sesuai. Fungsi khusus berbeza-beza berdasarkan sistem pangkalan data: GROUP_CONCAT
(MySQL), STUFF
(SQL Server 2005 ), STRING_AGG
(SQL Server 2017 ), atau kaedah pengagregatan rentetan terbina dalam Oracle.
Pelaksanaan Khusus Pangkalan Data
<code class="language-sql">SELECT r.name, GROUP_CONCAT(a.name SEPARATOR ',') AS application_list FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name;</code>
STUFF
:<code class="language-sql">SELECT r.name, STUFF((SELECT ',' + a.name FROM APPLICATIONS a JOIN APPLICATIONRESOURCES ar ON ar.app_id = a.id WHERE ar.resource_id = r.id FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS application_list FROM RESOURCES r;</code>
STRING_AGG
yang lebih ringkas:<code class="language-sql">SELECT r.name, STRING_AGG(a.name, ',') AS application_list FROM RESOURCES r JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id JOIN APPLICATIONS a ON a.id = ar.app_id GROUP BY r.name;</code>
LISTAGG
atau teknik pengagregatan rentetan yang serupa. Rujuk dokumentasi Oracle untuk sintaks tertentu.Ringkasan
Penyelesaian pertanyaan tunggal ini menyediakan kaedah yang cekap untuk menjana senarai aplikasi yang dipisahkan koma bagi setiap sumber. Pilihan fungsi bergantung pada sistem pangkalan data yang digunakan, memastikan prestasi optimum dan pembentangan data untuk antara muka pengguna aplikasi anda.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Senarai Aplikasi Berkaitan yang Dipisahkan Koma dengan Cekap dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!