Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memaparkan Kiraan Sifar dalam Pertanyaan JOIN MySQL?

Bagaimana untuk Memaparkan Kiraan Sifar dalam Pertanyaan JOIN MySQL?

Susan Sarandon
Susan Sarandonasal
2024-12-02 16:11:12898semak imbas

How to Display Zero Counts in MySQL JOIN Queries?

Memaparkan Kiraan Sifar dalam Kueri Kiraan MySQL

Dalam bidang pengurusan pangkalan data, operasi mengira sering digunakan untuk mendapatkan maklumat agregat. Walau bagaimanapun, apabila bekerja dengan pertanyaan JOIN, adalah sukar untuk memaparkan kiraan sifar, terutamanya apabila terdapat nilai yang hilang atau batal. Isu ini timbul apabila cuba mengira nilai untuk semua baris dalam jadual, tetapi sesetengah baris tidak mempunyai entri yang sepadan dalam jadual bercantum.

Masalah: Hilang Kiraan Sifar

Pertimbangkan senario berikut: kami mempunyai dua jadual, Pekerja dan Langganan mel. Jadual melSubscriptions mengandungi maklumat langganan untuk pekerja, dengan setiap pekerja mempunyai EmployeeName yang unik. Kami ingin menentukan bilangan langganan yang dikaitkan dengan setiap pekerja, termasuk pekerja tanpa langganan (iaitu, menunjukkan kiraan sifar).

Menggunakan pertanyaan berikut:

Select COUNT(c.Name) 
From Employee 
    INNER JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName;

Kami hanya akan mendapatkan semula dikira untuk pekerja yang mempunyai sekurang-kurangnya satu entri dalam jadual melSubscriptions. Pekerja tanpa langganan akan dikecualikan daripada keputusan.

Penyelesaian: Tinggalkan SERTAI dan KUMPULAN OLEH

Untuk membetulkan isu ini dan mendapatkan kiraan untuk semua pekerja, kami boleh menggunakan KIRI SERTAI dan klausa KUMPULAN MENGIKUT. A LEFT JOIN memastikan bahawa semua baris daripada jadual Pekerja disertakan dalam keputusan, walaupun jika tiada baris yang sepadan dalam jadual melSubscriptions. Klausa GROUP BY kemudian mengumpulkan hasil mengikut nama pekerja, membolehkan kami mengira bilangan langganan untuk setiap pekerja:

SELECT c.name, count(m.mailid)
FROM Employee 
   LEFT JOIN mailingSubscriptions as m ON c.Name = m.EmployeeName
GROUP BY c.name;

Dengan menggunakan pertanyaan yang diubah suai ini, kami kini mendapatkan semula kiraan langganan untuk semua pekerja, termasuk mereka yang mempunyai langganan sifar. Ini membolehkan kami mempunyai paparan lengkap data langganan pekerja, tanpa mengira status langganan mereka.

Atas ialah kandungan terperinci Bagaimana untuk Memaparkan Kiraan Sifar dalam Pertanyaan JOIN MySQL?. 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