2012-10-22 49 views
0

我想把所有mySql結果放在一個html表中。這是MySQL的:從mysql進入html表的每一天的每一天計數記錄

SELECT date(vwr_date) AS mon, date(vwr_date) AS date, count(vwr_cid) AS views 
FROM car_viewer 
WHERE Year(vwr_date)='2012' AND vwr_tid='18' 
GROUP BY date 
ORDER BY date DESC 

從上面的查詢,它的結果是這樣的:

date  views 
2012-10-23 14 
2012-10-22 339 
2012-10-21 305 
2012-10-20 354 
.... 
2012-10-01 291 
2012-09-30 246 
2012-09-29 297 
... 
2012-09-01 281 

從MySQL結果是非常好的。現在這是一個問題。我嘗試了很多次和不同的方式,根據car_viewer.vwr_date中的每個日期放入這些視圖。所以我這樣寫:

<table border="0" cellpadding="3" cellspacing="1" width="100%"> 
     <thead> 
     <tr> 
      <th>Mon Year/Date</th> 
      <? 
      for($i=1;$i<32;$i++){ 
       echo "<th>$i</th>"; 
      } 
      ?> 
     </tr> 
    </thead> 
    <tbody> 
     <? 
     $_thisYear=date("Y"); 
     $sql_nViewer="select date(vwr_date) as mon, date(vwr_date) as date, count(vwr_cid) as views from car_viewer where Year(vwr_date)='$_thisYear' and vwr_tid='$_SESSION[admin_id]' GROUP BY date ORDER BY date desc"; 
     echo $sql_nViewer; 
     $result_nViewer=mysql_db_query($dbname,$sql_nViewer); 
     $rec_nViewer=mysql_fetch_array($result_nViewer); 
     $_monYear=date("M Y",strtotime($rec_nViewer[mon])); 
     $_monYear2=date("Y-n",strtotime($rec_nViewer[mon])); 

      echo "<tr><td>$_monYear</td>";//month name 
     $day=1; 
     while($rec_nViewer=mysql_fetch_assoc($result_nViewer)){ 
      $_nViewerDBdate=$rec_nViewer['date']; 
      $_nViewerDBviews=$rec_nViewer['views']; 
      echo " 
      <td>$_nViewerDBviews</td> 
      ";$day++; 
      if($day==$_daysInMon+1){ 
       echo "</tr>"; 
      } 
     } 
     ?> 
     </tbody> 
     </table> 

上面的代碼的結果是奇怪的 - 不是我想要的。我需要顯示的數據是這樣的: expected table

所以請建議我該怎麼做才能達到我的預期。問候

回答

0

您可以在格式從MySQL

SELECT MONTH_v, YEAR_V 
GROUP_CONCAT(IF(day_v=1, views, null)) AS '1', 
GROUP_CONCAT(IF(day_v=2, views, null)) AS '2', 
---- 
GROUP_CONCAT(IF(day_v=31, views, null)) AS '31' 
FROM 
(
SELECT DAY(vwr_date) AS day_v, 
MONTH(vwr_date) AS MONTH_v, 
Year(vwr_date) AS YEAR_V, 
date(vwr_date) AS date_v, 
count(vwr_cid) AS views 
FROM car_viewer 
WHERE Year(vwr_date)='2012' AND vwr_tid='18' 
GROUP BY date_v 
) 
GROUP BY MONTH_v, YEAR_V 
ORDER BY MONTH_v, YEAR_V DESC 
+0

我已經得到了錯誤的返回結果: '#1064 - 你在你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'GROUP_CONCAT(IF(day_v = 1,views,null)'附近使用正確的語法)AS'1',GROUP_CONCAT(IF(day_v = 2,views,n'at line 2' – Wilf

+0

然後,我認爲這可能是一些問題的遺漏或逗號,然後我有:'#1248 - 每個派生表必須有自己的別名 – Wilf