0

每次有人访问我网站上的博客文章时,我都会将其记录在表 [blog_article_hits] 中。每次访问都有一行。我现在想显示过去 14 天的热门文章列表,显示文章标题和收到的点击量或百分比。

例子:

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],纯粹是因为我想在每个列出的结果旁边显示一张照片。

有人可以告诉我如何解决这个问题吗?

非常感谢 adv。

4

1 回答 1

1

将计数更改为:

COUNT(DISTINCT tre.PK) AS total_hits

PK该表的主键在哪里。

于 2012-10-10T18:33:11.283 回答