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?

Bagaimanakah Saya Boleh Menggabungkan Dua Penyata PILIH ke dalam Satu Pertanyaan Tunggal untuk Menunjukkan Kiraan Tugasan dan Kiraan Tugasan Lewat?

Patricia Arquette
Patricia Arquetteasal
2025-01-08 22:46:43578semak imbas

How Can I Combine Two SELECT Statements into a Single Query to Show Task Counts and Late Task Counts?

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!

Kenyataan:
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