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!