Php 要计算MySql中值为“1”的整个表吗

Php 要计算MySql中值为“1”的整个表吗,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个表反馈,有列ans1、ans2、ans3….,每列的值从0到2。我要计算值为1的所有列 在前端,我显示0为差,1为好,2为优秀。我想统计一下不良反馈、良好反馈和优秀反馈的总数。例如,如果表在ans1中有两个0,在ans2中有三个0,那么总数应该是五个0。一个选项,使用布尔表达式的求和: SELECT SUM((ans1 = 0) + (ans2 = 0) + ... + (ansN = 0)) AS poor_count, SUM((ans1 = 1) + (ans2 =

我有一个表反馈,有列ans1、ans2、ans3….,每列的值从0到2。我要计算值为1的所有列


在前端,我显示0为差,1为好,2为优秀。我想统计一下不良反馈、良好反馈和优秀反馈的总数。例如,如果表在ans1中有两个0,在ans2中有三个0,那么总数应该是五个0。

一个选项,使用布尔表达式的求和:

SELECT
    SUM((ans1 = 0) + (ans2 = 0) + ... + (ansN = 0)) AS poor_count,
    SUM((ans1 = 1) + (ans2 = 1) + ... + (ansN = 1)) AS good_count,
    SUM((ans1 = 2) + (ans2 = 2) + ... + (ansN = 2)) AS excellent_count
FROM feedback;

也许双循环可以解决这个问题

$feedback = $this->db->get('feedback'); //get your data table
$poor = 0; $good = 0; excel=0;
foreach($feedback as $data1){
    foreach($data1 as $data2){
        if($data2 == 0){
           $poor++;
        }
        if($data2 == 1){
           $good++;
        }
        if($data2 ==2){
           $excel++;
        }
    }

首先修复您的模式。任何时候你发现自己有上面列举的列,比如2,你可以确定你的设计是次优的。我用$ex=$this->db->querySELECT从dine\u in\u feedback中选择COUNTservice\u ans\u 1,其中service\u ans\u 1=2作为一个,从dine_in_feedback中选择COUNTservice_ans_2,其中service_ans_2=2作为b选择SUMa+b作为ex->row->ex;