Menggabungkan Berbilang Pernyataan SELECT SQL: Contoh Praktikal
Panduan ini menunjukkan cara menggabungkan hasil berbilang penyataan SQL SELECT
dengan cekap ke dalam satu jadual yang komprehensif. Kami akan menggunakan pangkalan data pengurusan tugas sebagai contoh. Setiap rekod tugasan termasuk butiran seperti tarikh akhir, hari sehingga tarikh akhir (PALT) dan umur (hari sejak penciptaan). Matlamatnya adalah untuk menjana laporan yang menunjukkan, untuk setiap orang, jumlah kiraan tugas mereka dan bilangan tugas yang tertunggak.
Pertanyaan individu untuk mengira jumlah tugasan dan tugas lewat mungkin kelihatan seperti ini:
<code class="language-sql">SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks;</code>
<code class="language-sql">SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks;</code>
Untuk menggabungkan hasil carian ini, kami menggunakan LEFT JOIN
. Ini memastikan semua orang daripada jumlah kiraan tugas disertakan, walaupun mereka tidak mempunyai tugas tertunggak.
<code class="language-sql">SELECT t1.ks, t1."Total Tasks", COALESCE(t2."Overdue Tasks", 0) AS "Overdue Tasks" FROM (SELECT ks, COUNT(*) AS "Total Tasks" FROM Table GROUP BY ks) t1 LEFT JOIN (SELECT ks, COUNT(*) AS "Overdue Tasks" FROM Table WHERE Age > Palt GROUP BY ks) t2 ON t1.ks = t2.ks;</code>
Fungsi COALESCE
mengendalikan kes di mana seseorang tidak mempunyai tugas tertunggak (mengakibatkan NULL
daripada LEFT JOIN
), menggantikan NULL
dengan 0 untuk kejelasan. Jadual akhir akan menunjukkan ks
(ID orang), "Jumlah Tugasan" dan "Tugas Tertunggak". LEFT JOIN
memastikan semua individu disenaraikan, tidak kira sama ada mereka mempunyai tugas tertunggak.
Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Penyata SQL SELECT Berbilang untuk Mengira Tugas dan Tugasan Lewat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!