Menyelesaikan Isu Pengiraan Komen dengan Keadaan IF dalam Pertanyaan MySQL
Anda menghadapi masalah di mana pertanyaan MySQL anda secara konsisten mengembalikan kiraan ulasan minimum daripada 1 walaupun dalam ketiadaan komen yang diluluskan untuk artikel berita tertentu. Untuk membetulkan perkara ini, mari kita terokai pendekatan yang disemak.
Pertanyaan anda menggunakan fungsi count() untuk mengira ulasan yang diluluskan, tetapi ia sememangnya menghasilkan nilai minimum 1 untuk setiap baris, tanpa mengira kewujudan ulasan. Penyelesaiannya terletak pada penggunaan fungsi sum() sebaliknya.
Pertimbangkan pertanyaan yang diubah suai berikut:
SELECT ccc_news . * , SUM(if(ccc_news_comments.id = 'approved', 1, 0)) AS comments FROM ccc_news LEFT JOIN ccc_news_comments ON ccc_news_comments.news_id = ccc_news.news_id WHERE `ccc_news`.`category` = 'news_layer2' AND `ccc_news`.`status` = 'Active' GROUP BY ccc_news.news_id ORDER BY ccc_news.set_order ASC LIMIT 20
Dalam versi yang disemak ini, kami menggunakan fungsi sum() dalam if() ungkapan bersyarat pernyataan. Ia mengira kiraan agregat 1 untuk ulasan yang diluluskan dan 0 untuk ulasan yang tidak diluluskan, dengan berkesan mengembalikan kiraan tepat ulasan yang diluluskan untuk setiap artikel berita.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengira Komen Yang Diluluskan dengan Benar dalam MySQL untuk Mengelakkan Minimum 1?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!