我想在模型中构建一个查询,用于对具有相同类型值的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”
提前感谢任何解决方案。
答案 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来获取每个值的出现次数。