Я пытаюсь создать запрос, который будет генерировать их общее использование, которое зависит от цен. Я не знаю, возможно ли это в простом запросе, поэтому вот оно.
Основная таблица // Эта таблица для всех людей, так что это непрерывно, это можно добавить, столбец IDуникальный.
id price date_created
25 8.5 2019-08-16
26 11.5 2019-08-01
таблица электричества // Эта таблица является непрерывной базой для main_id, пока main_id существует в Main table
каждый день, эта таблица usage
будет иметь свое повседневное значение для всехmain_id, который существует в основной таблице. это похоже на электричество, вырабатываемое для их повседневного использования.
id main_id current_usage date_generated
1 25 10 2019-08-16
2 25 10 2019-08-17
3 25 10 2019-08-18
4 25 10 2019-08-19
5 25 10 2019-08-20
6 25 10 2019-08-21
7 26 20 2019-08-01
8 26 5 2019-08-02
9 26 5 2019-08-03
10 26 10 2019-08-04
Мой запрос
SELECT main.id
, main.price
, SUM(electricity.current_usage)*main.price total_generated
, electricity.date_generated
FROM main AS main
INNER JOIN electricity AS electricity
ON main.id = electricity.main_id
GROUP
BY MONTH(electricity.date_generated);
Здесь у меня нет проблем, потому что я хочу получить только одинк единице.
так что вывод будет
id price total_genereated
25 8.5 510
26 11.5 460
вот в чем моя проблема, вот где я застрял
есть таблица price_history
Цель этой таблицы состоит в том, чтобы цена могла в любое время изменить этот main_id в Main table
.
id main_id changed_price price_date_changed
1 25 15 2019-08-18
2 26 20 2019-08-03
вместо получения только двух строк. Мне нужно 4 строки здесь из-за ценовой истории. цена изменилась.
Пример вывода
id price total_genereated date_range
25 8.5 170 2019-08-16 - 2019-08-17
25 15 600 2019-08-18 - 2019-08-21
26 11.5 287 2019-08-01 - 2019-08-02
26 20 300 2019-08-03 - 2019-08-04
Я не знаю, действительно ли моя идея возможна, просто делая это на Query, я действительно застрял с этой проблемой. Я думаю, что использовать оператор IF здесь, в MYSQL, или это просто сложно сделать в Query?