有没有办法有一个条件语句来仅使用 MySQL 比较表?



我在比较我的表格时遇到了两难境地。

我的问题是,我想得到每笔钱,这取决于定价。这是表格。

主表

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将按MONTH和YEAR求和,并将乘以其指定价格,这取决于价格是否发生变化的日期。 每个月的总和将通过与Main table中的main price相乘来生成,但如果价格已从其原始价格更改为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);

我知道我的查询还不够,我仍然不知道我的想法是否真的可能:(。

我绞尽脑汁。 哈哈哈 这是你要追求的吗?

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) ;

相关内容

  • 没有找到相关文章

最新更新