2014-10-02 47 views
0

如果您帮我,我将不胜感激。我只是想根据货币按价格订购产品。有两种类型的DB。订单价格根据货币种类在mysql中的实际价值

这是第一个数据库产品表。

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

这是第一个数据库中的货币表。

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

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

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

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

回答

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

“调整后的价格”一栏是调整到美元的价格,然后你可以通过这个顺序。

+0

这就是我想要的。奇迹般有效。先谢谢你。 – 2014-10-02 22:03:14

0

我认为,这是更好地保持一种货币内的价格。如果你需要保持另一种货币 - 只是创建另一个领域为usd_price或货币价格的全新表: product_prices: product_id(int), currency_id(int), price(double)

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

def usd_price 
    price * currency_rates[:usd] 
end 
+0

你的意思是我应该为产品表中的每种货币创建字段?那我怎么才能让它们在mysql中的汇率更新呢?我想保持更新的汇率,我想按实际价格订购产品。我不知道如何按实际价格查询订单。 – 2014-10-02 21:37:35

+0

然后在你的模型中制作方法:查看更新回答 – IlyaDoroshin 2014-10-02 21:39:26

+0

我是笨蛋。请给我完整的查询和工作示例:)我找到了一个关于它的线程,但我真的不明白它。 http://stackoverflow.com/questions/25734194/converting-currency-in-mysql-using-a-join?answertab=active#tab-top – 2014-10-02 21:45:47