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
Lepaskan: 2024-12-02 16:11:12
asal
893 orang telah melayarinya

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;
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan