Comptage avec la condition IF dans la requête MySQL
Votre objectif est de récupérer le nombre de commentaires approuvés pour les articles d'actualité. Cependant, votre requête actuelle renvoie une valeur minimale de 1 pour la colonne des commentaires, même s'il n'existe aucun commentaire pour un article particulier.
Pour résoudre ce problème, remplacez la fonction count() par sum() dans votre requête. Entrons dans les détails :
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
Comment ça marche :
La fonction sum() évalue chaque expression VRAIE à 1 et les expressions FAUX à 0, renvoyant effectivement le nombre total de commentaires approuvés.
Cette requête mise à jour fournit désormais des décomptes précis, indiquant si chaque article d'actualité a approuvé ou non des commentaires.
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!