У меня есть таблица, в которой ежедневно покупается клиент.Я пытаюсь получить список всех товаров, которые клиент не покупал ежедневно.
Дополнительные пояснения. Ниже приведена таблица
+------------+---------+------------+
| dt | product | product_id |
+------------+---------+------------+
| 2019-01-01 | Milk | 1 |
| 2019-01-02 | Bread | 2 |
| 2019-01-03 | Butter | 3 |
| 2019-01-04 | Beer | 4 |
| 2019-01-05 | Salt | 5 |
| 2019-01-06 | Sugar | 6 |
+------------+---------+------------+
Я пытаюсь получить отчет оНе купленные товары на основе всего списка.
+------------+------------------------------+
| dt | product_not_purchased |
+------------+------------------------------+
| 2019-01-01 | Bread,Butter,Beer,Salt,Sugar |
| 2019-01-02 | Milk,Butter,Beer,Salt,Sugar |
| 2019-01-03 | Milk,Bread,Beer,Salt,Sugar |
+------------+------------------------------+
Для простоты здесь приведены данные только для одного покупателя, и покупателем будет приобретен только один товар.Но даты не являются статичными, даты могут расти с нерегулярной частотой.
Пример запроса на один день:
select dt, product, product_id from
trans where product_id not in (select distinct product_id
from trans where dt not in ( '2019-01-01'))
where dt = '2019-01-01';
Я пытаюсь продлить его на каждый день.Я пытался использовать CTE и разделы, но это не сработало.Однако я решил создать временную таблицу и использовать минус.Как мне решить эту проблему?Или временная таблица - лучшее решение?
SQL-запросы для создания таблицы и вставки значений.Я использую MySQL:
create table trans (dt date, product varchar(10), product_id int);
insert into trans values ('2019-01-01','Milk',1);
insert into trans values ('2019-01-02','Bread',2);
insert into trans values ('2019-01-03','Butter',3);
insert into trans values ('2019-01-04','Beer',4);
insert into trans values ('2019-01-05','Salt',5);
insert into trans values ('2019-01-06','Sugar',6);