2012-05-18 82 views
2

什麼是在PHP/MySQL的處理數據透視表的最佳方法(或大意的東西)透視表的PHP/MySQL

我有一個返回信息,如下

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 

查詢和我希望在PHP中構建一個報表,該報表由具有星期開始的列標題的組計算。例如。

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 

但是我不確定從哪裏開始,因爲標題是動態的,具體取決於報告將運行哪個月。

我知道如何通過一個月的細節和檢索PHP中的所有數據,但它目前在一列輸出,而不是能集團,並把它在數組中。

任何幫助表示讚賞!

+0

的可能重複[MYSQL - 行到列(http://stackoverflow.com/questions/1241178/mysql-rows-to-columns) – TMS

+0

另一個類似的問題HTTP ://stackoverflow.com/q/7674786/684229 – TMS

+0

http://gonzalo123.com/2010/01/24/pivot-tables-in-php/ – marbel

回答

3

您可以有可能與一個子查詢做到這一點,那麼產生這種數據的彙總。嘗試沿着此線的東西:

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 
+0

這工作就像一個魅力,沒有想到這樣做是辦法! – franglais

+0

它可能不是超高效的,但它的工作原理:D –