我需要在我的数据库中存储多种货币......这就是问题所在:
示例表:
[ Products ]
id (INT, PK)
name (VARCHAR)
price (DECIMAL)
currency (INT, FK)
[ Currencies ]
id (INT, PK)
name (VARCHAR)
conversion (DECIMAL) # To U$
我将使用用户选择的货币存储产品价格......
稍后我需要使用价格区间搜索产品,例如“搜索产品>价格从50美元到100美元”,我需要系统“动态”转换这些值以运行SQL查询和过滤产品。
我真的不知道怎么做这个查询...:/
也许是这样的?
SELECT p.`name`, p.`price` * c.`conversion` AS price
FROM `products` AS p
INNER JOIN `conversion` AS c
ON p.`currency` = c.`id`
WHERE price >= 50 AND price <= 100
LIMIT 10
答案 0 :(得分:3)
SELECT P.name, P.price local_price, P.price * C.conversion usd_price
FROM Products P
INNER JOIN Currencies C
ON C.id = P.currency
然后你可以添加像
这样的条件WHERE (P.price * C.conversion) > 50
价格高于50美元。
修改强>
如果您没有,最好有美元的货币记录(转换价值为1.0),因此转换为美元不是例外。
答案 1 :(得分:0)
除了我的头脑,我能想到的是,您的美元乘数将为1,因此您可以将价格与转换相乘,并在查询中获取美元价值并在这些值上使用您的范围。或者,如果要进行反规范化,请在名为“USD_price”的Products中引入一个新列,并在其中保存price * conversion的值,这样可以简化并加快速度。但是我必须指出转换率并不总是相同,不确定你是如何处理的。