在mysql中按货币类型按实际价格订购价格

时间:2014-10-02 21:26:49

标签: mysql currency

如果你帮助我,我将不胜感激。我只是想按照货币按价格订购产品。有两种类型的DB。

这是第一个DB中的产品表。

+----+--------------+-------+-------------+
| id | product_name | price | currency_id |
+----+--------------+-------+-------------+
|  1 | X PRODUCT    | 11.00 |           1 |
|  2 | Y PRODUCT    | 10.00 |           2 |
+----+--------------+-------+-------------+

这是第一个DB中的货币表。

+----+------+-------+
| id | name | value |
+----+------+-------+
|  1 | USD  |  1.00 |
|  2 | EUR  |  1.26 |
+----+------+-------+

这是DB结构的第二个选项。只有一张桌子。

+----+--------------+-------+----------+
| id | product_name | price | currency |
+----+--------------+-------+----------+
|  1 | X PRODUCT    | 11.00 | USD      |
|  2 | Y PRODUCT    | 10.00 | EUR      |
+----+--------------+-------+----------+

我不知道我应该使用哪个数据库,而且我不知道如何按照美元的实际价格按价格订购。

2 个答案:

答案 0 :(得分:1)

使用第一个选项(如果货币更改名称,则为合成键),您最终会得到一个简单的JOIN以获得正确的顺序;

SELECT p.*, value*price adjusted_price
FROM products p
JOIN currency c
  ON c.id = p.currency_id
ORDER BY adjusted_price

An SQLfiddle to test with

"调整后的价格"列是调整为美元的价格,然后您可以按此顺序。

答案 1 :(得分:0)

我认为,最好将价格保持在一种货币之内。如果您需要保留另一种货币 - 只需为货币价格usd_price或整个新表创建另一个字段: product_prices: product_id(int), currency_id(int), price(double)

UPD:为不同货币的实际价格创建方法

def usd_price
  price * currency_rates[:usd]
end