代码之家  ›  专栏  ›  技术社区  ›  Thiago Belem

查询多种货币

  •  0
  • Thiago Belem  · 技术社区  · 16 年前

    我需要在我的数据库中存储多种货币…问题是:

    示例表:

    [ Products ]
    id (INT, PK)
    name (VARCHAR)
    price (DECIMAL)
    currency (INT, FK)
    
    [ Currencies ]
    id (INT, PK)
    name (VARCHAR)
    conversion (DECIMAL) # To U$
    

    我将用用户选择的货币存储产品价格…

    稍后,我需要使用一个价格间隔来搜索产品,如“Search Products>with Price from U$50 to U$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
    
    2 回复  |  直到 16 年前
        1
  •  3
  •   Joel Goodwin    16 年前
    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),这样换算成美元就不例外了。

        2
  •  0
  •   Sabeen Malik    16 年前

    从我的头顶上,我能想到的是,你对美元的乘数是1,所以你可以将价格与转换相乘,在查询中得到美元值,并使用你的范围来处理这些未定义的值。或者如果你想去标准化,在产品中引入一个新的栏目,叫做“美元价格”,并在那里保存价格*转换的价值,这将简化和加快事情的发展。但是我必须指出的是,转换率并不总是一样的,不知道你是如何处理的。

    推荐文章