Résoudre le problème du nombre de commentaires avec la condition IF dans la requête MySQL
Vous êtes confronté à un problème où votre requête MySQL renvoie systématiquement un nombre minimum de commentaires de 1 même en l’absence de commentaires approuvés pour certains articles de presse. Pour remédier à cela, explorons une approche révisée.
Votre requête utilise la fonction count() pour comptabiliser les commentaires approuvés, mais elle génère intrinsèquement une valeur minimale de 1 pour chaque ligne, quelle que soit l'existence du commentaire. La solution réside dans l'utilisation de la fonction sum() à la place.
Considérez la requête modifiée suivante :
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
Dans cette version révisée, nous utilisons la fonction sum() dans if() expression conditionnelle de l’instruction. Il calcule le nombre total de 1 pour les commentaires approuvés et de 0 pour les commentaires non approuvés, renvoyant ainsi un décompte précis des commentaires approuvés pour chaque article d'actualité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!