2012-04-24 73 views
0

我創建了一個php頁面mysql後端顯示包含職員姓名,月訂單爲這樣一個小桌子的結果:使用表中的數據字段作爲列標題?

<table border="1" cellpadding="1" cellspacing="1"> 
    <thead> 
     <tr> 
    <th scope="col">Name</th> 
    <th scope="col">Month</th> 
    <th scope="col">Cases</th>  
    </tr> 
    </thead> 
    <?php do { ?> 
    <tbody> 
    <tr> 
     <td><?php echo $row_rsChart2['ContactFullName']; ?></td> 
     <td><?php echo $row_rsChart2['Month']; ?></td> 
     <td><?php echo $row_rsChart2['Cases']; ?></td> 
    </tr> 
    </tbody> 
    <?php } while ($row_rsChart2 = mysql_fetch_assoc($rsChart2)); ?> 
</table> 

是否有可能,我可以使用月份的列標題,顯示一月,2月,3月等從左到右列標題和每月的情況作爲數據?

 
Jan - Feb - Mar 
User1 100 47 89 
user2 86 67 134 

使用默認的佈局它顯示:

 
Name - Month - Cases 
User1 Jan 100 
User1 Feb 47 
User2 Jan 67 
+0

我不知道我是否明白你想要什麼,但上面的代碼有問題。你的循環應該創建''而不是''。只要把你的''放在''裏。回到你的問題,如果你可以用一個輸出樣本進行更多的解釋,它會有很大的幫助。 – 2012-04-24 09:33:49

回答

2

MySQL沒有用於旋轉這樣的數據的原生支持。您有幾種選擇:

  1. 構建一個相當可怕的MySQL查詢手動執行轉動作:

    SELECT * 
        FROM (
        SELECT StaffName, SUM(NumOrders) AS January 
        FROM Orders 
        WHERE Month = 'January' 
        GROUP BY StaffName 
    ) AS tJan 
        NATURAL JOIN (
        SELECT StaffName, SUM(NumOrders) AS February 
        FROM Orders 
        WHERE Month = 'February' 
        GROUP BY StaffName 
    ) AS tFeb 
        NATURAL JOIN (
        -- etc. 
    

    如果你選擇走這條路,你可以讓你的生活稍微容易使用PHP中的循環構造或MySQL中的預準備語句自動生成此查詢。

  2. 執行上面,這樣你的MySQL數據庫的結構發生變化的一次性操作更密切地反映這一期望的佈局(容易,一旦表被轉換,但可能會影響到數據庫的其他用途):

    CREATE TABLE NewOrders (PRIMARY KEY('StaffName')) 
    SELECT * FROM (
        -- etc. as above 
    

    或者,您可以創建VIEW這是一種基於基礎表以這種方式構建的「虛擬表」。

  3. 以PHP手動轉換數據(單調乏味)。

相關問題