Php kullanarak aşağıdaki verileri yeniden düzenlemek nasıl?

1 Cevap php

i mysql sql sorgusu kullanarak aşağıdaki verileri alınır

TOTAL   COMPUTER        DATE        GROUP  
-----------------------------------------------
48      LAPTOP2     2009-08-19      1  
77      LAPTOP2     2009-08-20      1  
0       LAPTOP2     2009-08-21      1  
15      LAPTOP1     2009-08-19      1  
25      MAIN        2009-08-23      1  
25      LAP3        2009-08-18      2  
3       LAP3        2009-08-19      2  
55      LAP3        2009-08-20      2 

i kullanarak php gibi verileri yeniden düzenlemek istiyorum

group   computer    2009-08-18  2009-08-19   2009-08-20  2009-08-21  2009-08-22 2009-08-23  
------------------------------------------------------------------------------------------------
1       LAPTOP2      0          48            77         0           0          0  
1       LAPTOP1      0          15            0          0           0          0  
1       MAIN                                                                    25  
2       LAP3         25          3            55         0           0          0  

1 Cevap

Veri döndürmek için aşağıdaki sorguyu kullanabilirsiniz:

  SELECT t.group,
         t.computer,
         MAX(CASE WHEN t.date = '2009-08-18' THEN t.total ELSE 0 END) AS '2009-08-18',
         MAX(CASE WHEN t.date = '2009-08-19' THEN t.total ELSE 0 END) AS '2009-08-19',
         MAX(CASE WHEN t.date = '2009-08-20' THEN t.total ELSE 0 END) AS '2009-08-20'
         --, etc...
    FROM TABLE t
GROUP BY t.group, t.computer

Sizin seçenekleri dönme olan veriler için her bir sütun tanımlamak için, ya MySQL's Prepared Statement syntax dinamik bu sütunları oluşturmak için kullanabileceğiniz ya vardır.

LAPTOP2, sen 2009-08-18 için değer olarak sıfır olması için, ama bunun için main değer - Ben örnek tutarsız olduğuna işaret etmek ihtiyacı hissediyorum boş. O tarih için bir kayıt var ne. Bu boş olarak / etc, değişim ELSE 0 END CASE tablolara ELSE NULL END göstermek istiyorum.