В следующей таблице с именем hb_lead хранится уникальный запрос, код и отметка времени.Давайте назовем события, записанные здесь reg
id_hb_lead | lead_code | creation_date
-----------|-----------|--------------
1 | ABC | 2018-10-01
2 | DEF | 2018-10-02
3 | GHI | 2018-10-02
4 | CYZ | 2018-10-03
5 | HIJ | 2018-10-10
В таблице hb_lead_engagement хранится много раз, когда каждое лидерство взаимодействует с некоторыми вещами.Давайте назовем здесь зарегистрированные события enga
id_hb_lead_engagement | id_b_lead | id_event | event_date
----------------------|-----------|-----------|-----------
1 | 1 | 12 | 2018-10-02
2 | 2 | 12 | 2018-10-03
3 | 3 | 12 | 2018-10-03
4 | 4 | 12 | 2018-10-06
5 | 3 | 12 | 2018-10-08
6 | 5 | 12 | 2018-10-16
7 | 2 | 12 | 2018-10-19
8 | 3 | 12 | 2018-10-10
9 | 5 | 12 | 2018-10-10
Мне нужно сгенерировать таблицу, подобную этой, где для каждой и уникальной даты, reg и enga события подсчитываются.Пожалуйста, не волнует 0 или ноль , я могу COALESCE с 0 или ноль ...
date | reg | enga
-----------|----------|-----------
2018-10-01 | 1 |
2018-10-02 | 2 | 1
2018-10-03 | 1 | 2
2018-10-06 | | 1
2018-10-08 | | 1
2018-10-10 | 1 | 2
2018-10-16 | | 1
2018-10-19 | | 1
Использование Производная таблица какие первые UNION две таблицы для перечисления всех дат событий, а затем COUNT событий, я создал такую таблицу, которая не может дублировать даты, когда совпадают даты и reg и enga события больше, чем 1.
date | regs | engas
-----------|----------------|-----------
2018-10-01 | 1 |
2018-10-02 | 2 |
2018-10-02 | | 1
2018-10-03 | 1 |
2018-10-03 | | 2
2018-10-06 | | 1
2018-10-08 | | 1
2018-10-10 | 1 |
2018-10-10 | | 2
2018-10-16 | | 1
2018-10-19 | | 1
Так что я знаю, что способ решить эту проблему, скажем, агрегированные данные для каждой строки, это JOIN две таблицы в основном LEFT JOIN и затем используйте CASE .Однако из-за того, что это производная таблица, она может быть СОЕДИНЕНА сама с собой, поэтому мой вопрос заключается в том, как объединить полученную производную таблицу, зная, что производные таблицы не могут быть объединены с самим собой.
Если вам интересно, как я получил дату, вот мой запрос:
select *
from
(
select date_format(l.fecha_creacion, '%Y-%m-%d') as categoria,
count(*) as reg, '' as enga
from hb.hb_lead l
group by categoria
union
select date_format(le.le_fecha_creacion, '%Y-%m-%d') fecha, '',
count(*)
from hb.hb_lead_engagement le
where le.id_hb_evento = 12
group by fecha
order by 1
) t1
Я ограничен версией MySql: 5.5.5-10.1.36-MariaDB, поэтому ** с a как **вне обсуждения.Спасибо.