2012-10-10 30 views
0

每次有人訪問我網站上的博客文章時,我都會將它記錄在表[blog_article_hits]中。每次訪問都有一行。我現在想要顯示過去14天內的趨勢文章列表,顯示文章標題,收到的點擊量或百分比。MySQL - 計數記錄並按照受歡迎順序顯示計數

例子:

This is a blog article  1,0732 
This is another article  930 

我嘗試:

SELECT 
tre.article_id, COUNT(*) AS total_hits, art.title, art.description, 
pho.photo_id 
FROM blog_article_stats tre 
LEFT JOIN blog_articles AS art ON tre.article_id = art.article_id 
LEFT JOIN blog_photos AS pho ON art.article_id = pho.article_id 
WHERE tre.d_time BETWEEN DATE_SUB(Now(), INTERVAL 14 DAY) AND Now() 
AND pho.status = 'Published' AND art.status = 'Published' 
GROUP BY tre.article_id 
ORDER BY total_hits DESC LIMIT 5 

這是非常接近,但不完全正確。最受歡迎的文章按正確的順序列出,但每個標題旁邊的計數不正確。它實際上顯示了每篇文章有多少張照片,而不是多少次被訪問過。我認爲通過讓GROUP BY有所幫助,我甚至嘗試在[pho.article_id]上添加次要的GROUP子句,但這沒有幫助。

我選擇[pho.photo_id]和加盟[pho.blog_photos],純粹是因爲我想告訴一張照片並排列出的結果。

任何人都可以告訴我如何解決這個問題?

非常感謝。

回答

1

更改計數:

COUNT(DISTINCT tre.PK) AS total_hits 

其中PK是表的主鍵。

+0

謝謝ypercube,工作過。 – ShadowStorm