Есть ли способ иметь условный оператор для сравнения таблиц, использующих только MySQL? - PullRequest
0 голосов
/ 25 сентября 2019

У меня возникла дилемма при сравнении моих таблиц.

Моя проблема в том, что я хочу получить каждую сумму, которая зависит от цены.Вот таблица.

Основной стол

    main_id   main_price   main_date_created
      25           8.5         2019-08-16
      26           11.5        2019-08-01

Итого таблица

id    main_id    total_price   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

Таблица истории цен

id  main_id   changed_main_price   price_date_changed
1      25             15                    2019-08-18
2      26             20                    2019-08-03

Не знаюесли есть способ сделать это, просто используя MySQL, то, чего я пытаюсь добиться, это то, что Total table будет суммой к МЕСЯЦУ и ГОДУ и будет умножаться на их назначенную цену, которая зависит от даты, если ценаизменилось или нет.СУММА будет с каждого месяца генерироваться путем умножения на main price в Main table, но если цена изменилась по сравнению с первоначальной ценой на Price history table

Выход должен бытьэто если условное условие возможно:

id   main_id  total_price         price_generated (which is the prices) date
1     25      170 (10+10*8.5)        8.5              
2     25      610 (10+10+10+10*15)   15
3     26      287.5 (20+5*11.5)      11.5
4     26      300    (5+10*20)       20       

Вот мой существующий запрос,

SELECT m.main_id
     , m.main_price
     , SUM(t.total_price) total_generated
     , t.date_generated
  FROM main m
 INNER JOIN total t
    ON m.main_id = t.main_id
 GROUP 
    BY MONTH(t.date_generated);

Я знаю, что моего запроса недостаточно, и я все еще не знаю, соответствует ли моя идеядействительно возможно: (.

1 Ответ

0 голосов
/ 26 сентября 2019

Я ломал голову.хахаха Это ты после?

SELECT pricelist.id, pricelist.price, SUM(t.total_price),  SUM(t.total_price) * pricelist.price,
year( pricelist.latestdate), month(pricelist.latestdate),
year( t.total_date_generated), month(t.total_date_generated)
from totaltable as t

LEFT JOIN (
            (
            select main_id as id, main_price  as price, main_date_created as latestdate
            from maintable
            )
            UNION ALL
            (
            select total_main_id, changed_main_price , price_date_changed
            from pricehistorytable
            )
       ) as pricelist on  pricelist.id = t.total_main_id
GROUP BY    pricelist.id ,  t.total_price, pricelist.price,
year( pricelist.latestdate), month(pricelist.latestdate),
year( t.total_date_generated), month(t.total_date_generated) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...