Мне нужно оценить, сколько активности было в блоге Wordpress. Скажем, когда-нибудь будет 3 поста и 10 комментариев, баллы за пост равняются 10 и всего 1 за комментарий, затем в указанный день было в общей сложности 40 баллов. Тем не менее, могут быть некоторые дни без активности сообщений или без комментариев.
Моей первой идеей было простое LEFT JOIN
из постов в таблицу комментариев. Однако это исключит дни без постов. Я не гуру MySQL, но я занимался исследованиями, и, кажется, лучший способ решить эту проблему - это FULL OUTER JOIN
(, объясненный Джеффом Этвудом ), но MySQL не поддерживает это!
Тогда на самом деле есть обходной путь , но он не работает для меня. Кажется, что 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
бесполезен.
Что я делаю не так? Есть ли более простой способ сделать это?
Спасибо.
Примечание: вам придется добавлять несколько постов и комментариев в разные даты.