Mysql选择一种货币

时间:2018-03-12 12:22:26

标签: mysql join group-by

我必须用一种货币创建报告。我需要在不使用PHP进程的情况下在MySQL中进行查询。但无法弄清楚。 有一个名为currency_exchange_rate表的表如下,(LKR兑换其他货币的汇率)。这个表每月更新为LKR中每种货币的一条记录

exchange_rates

id  currency_id  start_date  exchange_rate
1     5           2017-01-2      155
2     4           2017-01-3      25
3     6           2017-01-3      53
4     5           2017-02-1      156
5     4           2017-02-1      24
6     6           2017-02-1      54   

有一个项目表如下

 pro_id  name      value      currency_id  status_id  owner_id  date
 1       studio1   500        5              1          44      2017-01-20
 2       lotus     120        5              1          42      2017-01-21
 3       auro      300        4              2          45      2017-01-21
 4       studio2   400        6              1          44      2017-01-22
 5       holland   450        4              3          46      2017-02-05
 6       studio3   120        4              3          47      2017-02-06
 7       studio4   400        6              3          48      2017-02-06 

如何以一种货币(DKK,但LKR的汇率)生成报告,例如状态明确,每月总计,按所有者计算的总数等。

我们必须考虑货币ID,要转换的货币和这些货币类型的月份汇率,以获得项目行的相关值。

希望你清楚我的情景。非常感谢您的帮助。

我不需要每份报告。只需要使用汇率表或状态明智报告在项目表中转换值的SQL,如下所示

status_id  value_in_one_currency
1          xxxx
2          xxxx
3          xxxx

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT A.status_id, A.`value` * B.exchange_rate `value_in_one_currency`
FROM project A JOIN exchange_rates B
ON A.currency_id=C.currency_id 
   AND DATE_FORMAT(A.`date`,'%m-%Y')=DATE_FORMAT(B.`start_date`,'%m-%Y');

有关见解,请参阅MySQL Join Made Easy

答案 1 :(得分:0)

这是我最终确定的内容: 我将currency_id = 5作为要转换的最终货币

SELECT A.*,C.exchange_rate AS DKK,D.exchange_rate AS LKR, (order_value * D.exchange_rate /C.exchange_rate ) AS `converted_value`
FROM projects A 
LEFT JOIN exchange_rates C ON  (DATE_FORMAT(C.start_date,'%Y-%m')=DATE_FORMAT(A.`date`,'%Y-%m') AND C.currency_id=5)
LEFT JOIN exchange_rates D ON  DATE_FORMAT(D.start_date,'%Y-%m')=DATE_FORMAT(A.`date`,'%Y-%m') AND D.currency_id=A.currency_id