【发布时间】:2011-06-25 20:31:49
【问题描述】:
我需要衡量 Wordpress 博客中的活动量。比如说,某天有3个帖子,10个cmet,一个帖子的积分是10分,评论只有1分,那么说一天总共有40分。但是,有些日子可能没有发布活动或没有评论活动。
我的第一个想法是一个简单的LEFT JOIN 从帖子到 cmets 表。但是,这将排除没有帖子的日子。我不是 MySQL 专家,但我一直在研究,似乎解决这个问题的最好方法是使用 FULL OUTER JOIN (explained by Jeff Atwood),但 MySQL 不支持这个!
然后,实际上有a workaround,但它对我不起作用。 RIGHT OUTER JOIN 似乎没有返回我需要的内容。
这是LEFT 一个,效果很好。
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
但是RIGHT 有问题。
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
因此,UNION 解决方法是无用的。
我做错了什么?有没有更简单的方法来做到这一点?
谢谢。
注意:您必须在不同的日期添加一些帖子和 cmets。
【问题讨论】:
-
除非您在转录时打错字,否则您的 RIGHT JOIN 的问题是它是 LEFT JOIN...
-
是的,这是一个错字。对不起。