2013-11-03 32 views
0

我正在嘗試使用cfchart創建區域圖表,但不知道如何解決該問題。我正在查詢表格中的所有評論,並希望顯示時間段(x軸上的幾天或幾個月)以及輸出創建評論的次數。以下是評論的查詢:如何使用cfchart區域類型來顯示每個時間段的評論

<cfquery name="qGetComments" datasource="#session.datasource#"> 
SELECT PersonFirstName 
     , PersonLastName 
     , PersonZip 
     , CommentCode 
     , refTopicID 
     , tbComment.CommentID 
     , tbComment.CreateDateTime 
FROM tbPerson 
JOIN tbComment ON tbPerson.PersonID = tbComment.PersonID 
</cfquery> 

從這裏,我不知道把值在cfchart輸出面積圖我想要的方式。像這樣?

<cfchart chartWidth="400" show3D="yes"> 
    <cfchartseries type="area" query="qGetComments" 
     valueColumn="CommentID" 
     itemColumn="CreateDateTime" /> 
</cfchart> 
+0

(編輯)*顯示每個時間段的評論*然後你需要一個聚合查詢。具體來說,一個包含「count(...)'和按您選擇的某個日期間隔進行分組(按日期,月份,ecetera)。這將涉及數據庫特定的日期函數。所以1)什麼時間間隔? 2)你的DBMS和版本是什麼? – Leigh

+0

你可能也想看看使用本地ZingChart庫而不是'cfchart'。我發現使用本地庫通常比在ColdFusion 10中使用'cfchart'簡單得多.ZingChart網站有一個'圖表生成器',它允許您爲特定類型的圖表生成特定類型格式的JSON。您可以使用該JSON並將其用作您需要執行的操作的基礎。 –

+0

嘿@leigh我正在使用SQL Server。按天分組將是完美的。感謝您的幫助! – user1431633

回答

2

一個簡單的方法來組按日期服務器記錄2008+以上投了datetime列到date。然後用簡單地使用該值的「CommentDate」列圖表項和「NumOfComments」:

SELECT CONVERT(DATE, tbComment.CreateDateTime) AS CommentDate 
     , COUNT(*) NumOfComments 
FROM tbPerson INNER JOIN tbComment ON tbPerson.PersonID = tbComment.PersonID 
GROUP BY CONVERT(DATE, tbComment.CreateDateTime); 


可以使圖表標籤友好多一點用戶通過SQL內格式化日期(見cast and convert)。請確保按date值排序結果,而不是格式化的字符串。否則,圖表標籤可能不會出現在正確的時間順序(這是一個常見的錯誤):

--- format as: Mon dd, yyyy 
SELECT CONVERT(VARCHAR, tbComment.CreateDateTime, 107) AS CommentDateString 
     , COUNT(*) NumOfComments 
FROM tbPerson INNER JOIN tbComment ON tbPerson.PersonID = tbComment.PersonID 
GROUP BY CONVERT(VARCHAR, tbComment.CreateDateTime, 107) 
ORDER BY CONVERT(DATE, CONVERT(VARCHAR, tbComment.CreateDateTime, 107), 107) 

SQLFiddle

順便說一句,如果HTML圖表是一種選擇,你可能會考慮斯科特的建議。通常CFChart對於簡單情況很好,但是一旦您開始自定義外觀(總會發生),通常您最好直接使用底層工具。

+0

哇。完美的作品!謝謝,@Leigh! – user1431633

相關問題