CodeIgniter查询多个字段中的组和计数值(相同类型)

时间:2014-12-13 21:29:57

标签: mysql sql codeigniter

我想在模型中构建一个查询,用于对具有相同类型值的3列(在一个MySQL表中)中的值进行分组和计数:INT(11)。

Column1的值为:“1”“2”“3”。

Column2的值为:“2”“3”“3”。

Column3的值为:“1”“1”“1”。

需要的结果是一个包含2个参数的数组:该数字的数字和计数器。

例如:数字“1”和计数器“4”

在我的CI模型中:

   public function report_1() {
   $sql = 'SELECT col1, COUNT(col1) as counter1, col2, COUNT(col2) as counter2,col2,COUNT(col3)
   as counter3 FROM table_name GROUP BY ....';   
   $query = $this->db->query($sql);
   return $query->result_array();
   }

在我的CI视图中: 带有2列的HTML表(“数字”和“计数器”):  数字“1”“2”“3”  计数器“4”“2”“3”

提前感谢任何解决方案。

1 个答案:

答案 0 :(得分:3)

要计算值在不同列中的存在时间,您需要先加入这些列,然后计算每个值的出现次数。

您可以使用UNION ALL

执行此操作

试试这个:

SELECT
    col_value,
    count(*) AS counter
FROM
    (
        SELECT col_1 AS col_value FROM test_a

        UNION ALL

        SELECT col_2 AS col_value FROM test_a

        UNION ALL

        SELECT col_3 AS col_value FROM test_a
    ) AS temp_tb
GROUP BY
    col_value
ORDER BY
    counter DESC

我们使用UNION ALL将所有列连接到一个名为col_val的列中,然后我们使用count和grouping来获取每个值的出现次数。