Problem mit der Kommentaranzahl mit der IF-Bedingung in der MySQL-Abfrage lösen
Sie stehen vor einem Problem, bei dem Ihre MySQL-Abfrage durchweg eine Mindestanzahl an Kommentaren zurückgibt von 1, auch wenn für bestimmte Nachrichtenartikel keine genehmigten Kommentare vorliegen. Um dies zu beheben, untersuchen wir einen überarbeiteten Ansatz.
Ihre Abfrage verwendet die Funktion count(), um genehmigte Kommentare zu zählen, aber sie liefert grundsätzlich einen Mindestwert von 1 für jede Zeile, unabhängig davon, ob ein Kommentar vorhanden ist. Die Lösung liegt darin, stattdessen die Funktion sum() zu verwenden.
Betrachten Sie die folgende modifizierte Abfrage:
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
In dieser überarbeiteten Version verwenden wir die Funktion sum() innerhalb von if() Bedingter Ausdruck der Anweisung. Es berechnet die Gesamtzahl der Einsen für genehmigte Kommentare und der Nullen für nicht genehmigte Kommentare und liefert so effektiv eine genaue Liste der genehmigten Kommentare für jeden Nachrichtenartikel.
Das obige ist der detaillierte Inhalt vonWie kann ich genehmigte Kommentare in MySQL korrekt zählen, um ein Minimum von 1 zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!