映射查询结果仅汇总一个数字

时间:2019-02-24 13:01:39

标签: php sql arrays phpexcel

我有一个使用基本查询的非常基本的脚本,该脚本返回结果行并将其成功打印到excel工作表中

    //Create and run query
    $sql = "
    SELECT Manager, count(*) as Items
      from itemCount
    where start_date >= '2019-01-01'
    group by Manager
    order by Manager";

    $result = odbc_exec($DB2Conn, $sql);

    $phpExcel = new PHPExcel;
    $sheet = $phpExcel->getActiveSheet();
    $sheet ->setTitle("Management Numbers");
    $sheet ->getColumnDimension('A') -> setAutoSize(true);
    $sheet ->getColumnDimension('B') -> setAutoSize(true);



    //Create header row
    $sheet->setCellValue('A1', 'Manager');
    $sheet->setCellValue('B1', 'Items');

    $rowCount = 2;

    while($row = odbc_fetch_array($result)){
        var_dump($row);
        $sheet->setCellValue('A'.$rowCount, $row['Manager']);
        $sheet->setCellValue('B'.$rowCount, $row['Items']);

        $rowCount++;
    }

    $writer = PHPExcel_IOFactory::createWriter($phpExcel, "Excel2007");
    $writer->save('Management Numbers.xlsx');

问题出在这里

查询当前以这种格式返回正确的行:

Manager  |  Items
-----------------
12           5
13           2
16           3
11           7
18           4
19           8
22           1
21           7
32           4
53           3
25           5
75           2

但是每个经理都向某个部门汇报,因此我想对此进行映射,以便我可以硬编码并将经理分配给部门。

如何使用数组将经理分配给像

这样的部门
 1=>12,13,16 
 2=>11,18,19,22,21
 3=>32,53,25,75

这样我就得到一个电子表格,其中仅包含部门编号和为其分配的经理的汇总编号,如下所示:

Manager  |  Items
------------------
1           41
2           91
3           185

1 个答案:

答案 0 :(得分:2)

对于分配了部门的经理,您可以创建一个像这样的数组

$manager_array['manager_id'][]='department_id';

$manager_array['1'][]=12;
$manager_array['1'][]=13;
$manager_array['1'][]=16;

$manager_array['1']=array(12,13,16);

要获得每个部门的经理人数,请像$ pd $ manager_array ['manager_id']

count($manager_array[1]);

您还可以使用department_id列扩展您的itemCount表(如果可能)。