Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Dua Penyata PILIH ke dalam Satu Pertanyaan Tunggal untuk Menunjukkan Kiraan Tugasan dan Kiraan Tugasan Lewat?
Gabungkan hasil pernyataan SELECT ke dalam satu pertanyaan
Apabila bekerja dengan pangkalan data, adalah sangat berharga untuk menggabungkan data daripada pelbagai sumber data untuk analisis. Walau bagaimanapun, mencapai ini kadangkala memberikan cabaran. Dalam contoh ini, kami mempunyai dua pernyataan SELECT yang berasingan, setiap satu mendapatkan maklumat khusus daripada pangkalan data tugas.
Pernyataan SELECT pertama mengira bilangan tugasan yang diberikan kepada setiap orang:
<code class="language-sql">SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks</code>
Pernyataan SELECT kedua mengenal pasti bilangan tugas tertunggak untuk setiap orang (tugas yang Umurnya melebihi Palt):
<code class="language-sql">SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks</code>
Matlamat kami adalah untuk menggabungkan hasil dua pertanyaan ini ke dalam jadual yang mengandungi pengecam setiap orang (ks), jumlah tugasan yang mereka ada (# Tugasan) dan bilangan tugas tertunggak yang mereka ada (# Lewat) lajur.
Satu cara untuk mencapai matlamat ini ialah menggunakan operasi JOIN. Khususnya, LEFT JOIN membolehkan kami memasukkan semua baris daripada jadual pertama (t1) dan baris yang sepadan daripada jadual kedua (t2) apabila kekunci gabungan (ks) sepadan. Jika tiada baris yang sepadan dalam t2, hasilnya akan mengandungi nilai NULL. Ini memastikan bahawa walaupun orang yang tiada tugas tertunggak akan muncul dalam keputusan akhir.
Pertanyaan berikut melaksanakan LEFT JOIN:
<code class="language-sql">SELECT t1.ks, t1.[# Tasks], COALESCE(t2.[# Late], 0) AS [# Late] FROM (SELECT ks, COUNT(*) AS '# Tasks' FROM Table GROUP BY ks) t1 LEFT JOIN (SELECT ks, COUNT(*) AS '# Late' FROM Table WHERE Age > Palt GROUP BY ks) t2 ON (t1.ks = t2.ks);</code>
Fungsi COALESCE mengendalikan potensi nilai NULL dalam [# Lewat], memastikan nilai 0 dikembalikan. Ini akan menghasilkan jadual output yang diingini:
<code>KS # Tasks # Late person1 7 1 person2 3 1 person3 2 0 </code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Dua Penyata PILIH ke dalam Satu Pertanyaan Tunggal untuk Menunjukkan Kiraan Tugasan dan Kiraan Tugasan Lewat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!