Php Wordpress-每天获取帖子和评论的数量
我需要衡量Wordpress博客中有多少活动。比如说,有一天有3篇帖子和10条评论,一篇帖子的分数是10分,一条评论的分数只有1分,然后说这一天总共有40分。但是,可能有几天没有发布活动或没有评论活动 我的第一个想法是从posts到comments表的一个简单的Php Wordpress-每天获取帖子和评论的数量,php,mysql,wordpress,join,Php,Mysql,Wordpress,Join,我需要衡量Wordpress博客中有多少活动。比如说,有一天有3篇帖子和10条评论,一篇帖子的分数是10分,一条评论的分数只有1分,然后说这一天总共有40分。但是,可能有几天没有发布活动或没有评论活动 我的第一个想法是从posts到comments表的一个简单的左连接。但是,这将排除没有帖子的日子。我不是MySQL大师,但我一直在研究,似乎解决这一问题的最佳方法是使用完全外部连接(),但MySQL不支持这一点 然后,事实上有,但对我来说不起作用。似乎右侧外部联接没有返回我需要的内容。 这是左边的
左连接。但是,这将排除没有帖子的日子。我不是MySQL大师,但我一直在研究,似乎解决这一问题的最佳方法是使用完全外部连接
(),但MySQL不支持这一点
然后,事实上有,但对我来说不起作用。似乎右侧外部联接
没有返回我需要的内容。
这是左边的
一个,它工作得很好
SELECT
DISTINCT DATE(post_date) AS day,
COUNT(ID) AS post_total,
COUNT(comment_ID) as comment_total,
(COUNT(ID)*10 + COUNT(comment_ID)*1) AS total
FROM wp_posts
LEFT OUTER JOIN wp_comments ON
DATE(post_date) = DATE(comment_date)
GROUP BY day ORDER BY total DESC
但是正确的有问题
SELECT
DISTINCT DATE(post_date) AS day,
COUNT(ID) AS post_total,
COUNT(comment_ID) as comment_total,
(COUNT(ID)*10 + COUNT(comment_ID)*1) AS total
FROM wp_posts
RIGHT OUTER JOIN wp_comments ON
DATE(post_date) = DATE(comment_date)
GROUP BY day ORDER BY total DESC
因此,联合
解决方案是无用的
我做错了什么?有没有更简单的方法
谢谢
注意:您必须在不同的日期添加一些帖子和评论。我认为这不是您可以编写的最好的查询,但似乎很有效
CREATE VIEW commentsCount (date, counter) AS
SELECT
DISTINCT DATE(comment_date) AS date,
IFNULL(COUNT(comment_ID),0) AS total
FROM wp_comments
GROUP BY date ORDER BY total DESC
除非你抄写的时候打错了,否则你的右连接的问题是它是左连接…是的,它是打错了。我很抱歉。
CREATE VIEW postsCount (date, counter) AS
SELECT
DISTINCT DATE(post_date) AS date,
IFNULL(COUNT(ID),0) AS total
FROM wp_posts
GROUP BY date ORDER BY total DESC
SELECT
postsCount.date,
IFNULL(postsCount.counter,0),
IFNULL(commentsCount.counter,0),
(IFNULL(postsCount.counter,0)*10 + IFNULL(commentsCount.counter, 0))
FROM commentsCount RIGHT JOIN postsCount
ON DATE(postsCount.date) = DATE(commentsCount.date)
GROUP BY postsCount.date
union
SELECT
commentsCount.date,
IFNULL(postsCount.counter,0),
IFNULL(commentsCount.counter,0),
(IFNULL(postsCount.counter,0)*10 + IFNULL(commentsCount.counter, 0))
FROM commentsCount LEFT JOIN postsCount
ON DATE(postsCount.date) = DATE(commentsCount.date)
GROUP BY commentsCount.date