¿Cuál es la mejor forma de manejo de tablas dinámicas en php/MySQL (o algo a ese efecto)

Tengo una consulta que devuelve la información de la siguiente

id      eng     week        type                sourceid    userid
95304   AD      2012-01-02  Technical           744180      271332
95308   AD      2012-01-02  Non-Technical       744180      280198
96492   AD      2012-01-23  Non-Technical       1056672     283843
97998   AD      2012-01-09  Technical           1056672     284264
99608   AD      2012-01-16  Technical           1056672     283842
99680   AD      2012-01-02  Technical           1056672     284264
100781  AD      2012-01-23  Non-Technical       744180      280671

Y estoy deseando construir un informe en PHP que cuenta por los grupos con los encabezados de columna de la semana que comienza. E. g.

week commencing: 2012-01-02    2012-01-09    2012-01-16    2012-01-23    2012-01-30
Total:           3             1             1             1             0
Technical:       2             1             1             0             0
Non-Technical:   1             0             0             1             0

Pero no estoy realmente seguro de por dónde empezar, como los encabezados son dinámicos dependiendo del mes en que el informe se ejecute.

Sé cómo pasar los detalles de la mes y recuperar todos los datos en PHP, pero actualmente se encuentra la salida en una columna en lugar de ser capaces de grupo y ponerlo en una matriz.

Cualquier ayuda apreciada!

OriginalEl autor franglais | 2012-05-18

1 Comentario

  1. 4

    Usted puede hacer esto con una sub-consulta y, a continuación, producir y la agregación de estos datos. Trate de algo a lo largo de las líneas de este:

    select week, 
    count(*) as total, 
    sum(technical) as technical, 
    sum(non_technical) as non_technical) 
    from(
    select week, 
    case(type) when 'Technical' then 1 else 0 END as technical, 
    case(type) when 'Non-Technical' then 1 else 0 END as non_technical
    ) as data
    GROUP BY week

    OriginalEl autor Paul Bain

Dejar respuesta

Please enter your comment!
Please enter your name here