Задавайте вопросы, мы ответим
Вы не зашли.
Помогите пожалуйста.
Я думаю задача для вас будет легкой, но я пока не могу справиться с ней.
Есть 2 таблицы. Таблица deal содержит ID продукта и его название, а таблица dealevent содержит
название события, которое произошло в определенную дату.
Необходимо вывести все названия продуктов (Product_name) у которых текущий статус "Есть долг".
CREATE TABLE deal(
nk INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(50)
);
CREATE TABLE dealevent(
deal_nk INT,
eventtype VARCHAR(50),
event_time DATE
);
INSERT INTO dealevent (deal_nk, eventtype, event_time)
VALUES ('1','Есть долг', '2020-11-10'),
('1','Долг погашен', '2020-12-12'),
('2','Есть долг', '2020-09-09'),
('3','Закрыт', '2020-12-20'),
('4','Закрыт', '2020-09-09');
INSERT INTO deal (product_name)
VALUES ('Займ 1'), ('Займ 2'), ('Займ 3'), ('Займ 4'), ('Займ 5');
Данные таблицы придумал сам.
Решение данной задачи должно мне помочь в решении, совсем другой, более сложной задачи.
Неактивен
Если deal_nk равен nk из таблицы deal, то
для каждого deal_nk определяете eventtype, соответствующий последней дате (см https://sqlinfo.ru/articles/info/18.html
), если eventtype = "Есть долг", то это нужный вам deal_nk
далее JOIN deal для получения product_name
Неактивен
Большое спасибо! Добрый человек)
Несколько дней ломал голову, как это сделать. В итоге по предоставленной ссылке нашел для себя нужную информацию.
Я не знал что в условии соединения можно через AND прописывать несколько условий...
SELECT product_name
FROM dealevent d
JOIN (SELECT deal_nk, MAX(event_time) as mtime FROM dealevent GROUP BY deal_nk) de
ON d.deal_nk = de.deal_nk AND d.event_time = de.mtime
JOIN deal
ON deal.nk = d.deal_nk
WHERE eventtype = 'Есть долг';
Неактивен