Нужно объединить статистику из двух таблиц с группировкой по дням (day). p1, p2 - разделы сайта, здесь только для наглядности.
tbl_1:
p1 | day | p1_views | p1_clicks
-------------------------------
1 | 15 | 100 | 12
-------------------------------
1 | 16 | 98 | 8
-------------------------------
2 | 16 | 74 | 15
-------------------------------
2 | 17 | 50 | 5
tbl_2:
p2 | day | p2_views | p2_clicks
-------------------------------
7 | 14 | 50 | 1
-------------------------------
7 | 15 | 77 | 13
-------------------------------
8 | 15 | 10 | 0
-------------------------------
7 | 16 | 30 | 2
p1,p2 не важны, сгруппировать нужно по дням чтобы в выдаче было так:
day | p1_views | p1_clicks | p2_views | p2_clicks
-------------------------------------------------
14 | 0 | 0 | 50 | 1
-------------------------------------------------
15 | 100 | 12 | 87 | 13
-------------------------------------------------
16 | 172 | 23 | 30 | 2
-------------------------------------------------
17 | 50 | 5 | 0 | 0
Делаю так, со статистикой выходит беда, считается неверно всё, как только ни колдовал:
SELECT sum(tbl_1.p1_views) AS `p1_views`, sum(tbl_1.p1_clicks) AS `p1_clicks`,
sum(tbl_2.p2_views) AS `p2_views`, sum(tbl_2.p2_clicks) AS `p2_clicks`
FROM `tbl_1` LEFT JOIN tbl_2 ON tbl_1.day = tbl_2.day GROUP BY day
WITH cte AS ( SELECT day FROM tbl_1
UNION
SELECT day FROM tbl_2 )
SELECT cte.day,
COALESCE(SUM(tbl_1.p1_views), 0) p1_views,
COALESCE(SUM(tbl_1.p1_clicks), 0) p1_clicks,
COALESCE(SUM(tbl_2.p2_views), 0) p2_views,
COALESCE(SUM(tbl_2.p2_clicks), 0) p2_clicks
FROM cte
LEFT JOIN tbl_1 ON cte.day = tbl_1.day
LEFT JOIN tbl_2 ON cte.day = tbl_2.day
GROUP BY cte.day
Для MySQL 5 версии - переместить CTE в подзапрос.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
У меня есть веб-сайтНа нём есть ссылки редиректа на другой ресурс
Есть следующий код, который по-идее должен возвращать ссылку на последнюю страницу блога, однако он выводит ссылку на главную страницу блога...