阵列数据计算

时间:2013-09-10 16:37:06

标签: php mysql sql arrays multidimensional-array

我遇到了处理多维数组的问题。下面是存储从mysql到数组的所有数据查询的代码。我是否知道如何计算多维数组中有多少个不同的模块名称,并将状态分为2列,这些列是迟到的? SQL查询从复杂表中获取数据,该表存储所有ModuleName和不同的状态。我需要对它们进行分类并在表格中显示。所以基本上我需要检查数组中有多少模块以及模块的迟到或存在多少。

while($array = mysql_fetch_array($result)){
        $list[] = array(
                        "ModuleName"=>$array['ModuleName'],
                        "status"    =>$array['Status']
            ); 
    }

Sample of the SQL query

这是预期结果的样本

Sample Expected Result

1 个答案:

答案 0 :(得分:1)

按ModuleName更新为分组

SELECT ModuleName
      ,COUNT(*) AS module_count
      ,SUM(CASE WHEN Status != 'Present' THEN 1 ELSE 0 END) as late_count
      ,SUM(CASE WHEN Status  = 'Present' THEN 1 ELSE 0 END) as present_count
  FROM ( your original query )
 GROUP BY ModuleName

只需将“原始查询”替换为用于检索数组中数据的SQL。

<强>原始

SELECT COUNT(*) AS module_count
      ,SUM(CASE WHEN Status != 'present' THEN 1 ELSE 0 END) as late_count
      ,SUM(CASE WHEN Status  = 'present' THEN 1 ELSE 0 END) as present_count
  FROM ( your original query )