显示水平分组的查询数据

时间:2016-08-09 18:06:18

标签: php mysql count group-by

我有一张表,用于存储转帐。每次转移都有一个日期和一些movil。我需要每月统计一次,每天movil的转移次数。 该查询效果很好,但问题是我需要在列中显示每一天,并且每行movil显示一行。 我的想法是将所有结果保存在多维数组中。但是搜索价值的速度非常慢。

这是转移表:

id  fecha      movil
1   01/08/2016  A
2   01/08/2016  A
3   01/08/2016  B
4   02/08/2016  A
5   02/08/2016  B
6   02/08/2016  B
7   02/08/2016  C
8   02/08/2016  A
9   03/08/2016  A
10  03/08/2016  B

这是我的疑问:

select DAY(fecha),movil, count(id)
from traslados
where YEAR(fecha) = '2016' and MONTH(fecha) = '07' and movil is not null 
group by DAY(fecha),movil

现在,我必须在表格中显示结果,格式如下:

movil/fecha  1  2   3
A            2  1   1   
B            1  2   1   
C            0  1   0   

我有可能在查询或php代码中执行此操作吗?

ADDED

这是我的查询结果的样子:

DAY(FECHA)  MOVIL   COUNT
1              A    2
1              B    1
2              A    2
2              B    2
2              C    1
3              A    1
3              A    1

它包含我想要的所有数据,但不包含格式。

这是我的尝试:

<?
    $maxDias  = cal_days_in_month(CAL_GREGORIAN, '07', '2016');
    $cons = "select DAY(fecha) as dia,movil, count(idTraslado) as cantidad
        from traslados
        where YEAR(fecha) = '2016' and MONTH(fecha) = '07' and movil is not null 
        and (idObraSocial = 20 or idObraSocial = 5)
        group by DAY(fecha),movil";
    $result = mysql_query($cons, $conexion);
    $filas = mysql_affected_rows();


    $array = array();
    while($data = mysql_fetch_assoc($result)){
        $array[] = $data;
    }

    print_r($array);


    $consMoviles = "select DISTINCT movil from traslados
    where YEAR(fecha) = '2016' and MONTH(fecha) = '07' and movil is not null 
    and (idObraSocial = 20 or idObraSocial = 5)
    order by movil";
    $resultMoviles = mysql_query($consMoviles, $conexion);
    $cantMoviles = mysql_affected_rows();
    ?>
    <table class="table table-hover table-bordered">
    <thead>
        <tr class="success">

            <th>
                Movil/Día
            </th>
            <?for ($i = 1; $i < $maxDias; $i++) {?>
                <th>
                    <?echo $i;?>
                </th>
            <?}?>
        </tr>



    </thead>
    <tbody>
    <? while ($rowMovil = mysql_fetch_array($resultMoviles, MYSQL_ASSOC)) { ?>
        <tr>
            <th>
                <?=$rowMovil["movil"];?>
            </th>
            <?for ($i = 1; $i < $maxDias; $i++) {?>
                <th>
                    HERE SHOW DATA
                </th>
            <?}?>
        </tr>
        <?}?>
    </tbody>
    </table>

0 个答案:

没有答案