MySQL:加入货币代码

时间:2017-06-23 17:43:20

标签: mysql join left-join currency

我仍然是MySQL新手,但我正在尝试将最新的汇率加入货币代码为主键的货币列表中。

当尝试连接货币代码时,连接返回空值,但在连接到包含相同货币代码的其他表时则不返回空值。以下简化示例。

fx_rates表

date,        close_price, currency
2017-06-21,  1.6772,      AUD
2017-06-21,  1.6881,      CAD
2017-06-21,  1.2329,      CHF
2017-06-21,  1.1356,      EUR

货币表

currency, cur_name
AUD,      AUSTRALIAN DOLLAR
CAD,      CANADIAN DOLLAR
CHF,      SWISS FRANC
EUR,      EURO

货币是货币表的主键和fx_rates表中的外键。但是,当我尝试运行以下查询时:

**

select  cur_name, c.currency, fx.close_price
from currency c left join fx_rates fx on fx.currency = c.currency

**

我得到了

cur_name,          currency, close_price
AUSTRALIAN DOLLAR, AUD ,     NULL
CANADIAN DOLLAR,   CAD ,     NULL
SWISS FRANC,       CHF ,     NULL
EURO ,             EUR ,     NULL

非常感谢你能解决这个问题。

模式



-- -----------------------------------------------------
-- Table `atl`.`Currency`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `atl`.`Currency` (
  `currency` VARCHAR(45) NOT NULL,
  `cur_name` VARCHAR(45) NOT NULL,
  `bbg_ticker` VARCHAR(45) NULL,
  `pair_name` TEXT(100) NULL,
  `long_pair_name` TEXT(100) NULL,
  PRIMARY KEY (`currency`))
ENGINE = InnoDB;



-- -----------------------------------------------------
-- Table `atl`.`FX_Rates`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `atl`.`FX_Rates` (
  `Date` DATE NOT NULL,
  `close_price` VARCHAR(45) NOT NULL,
  `currency` varchar(45) NOT NULL,
  INDEX `currency_idx` (`currency` ASC),
  CONSTRAINT `currency`
    FOREIGN KEY (`currency`)
    REFERENCES `atl`.`Currency` (`currency`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;




0 个答案:

没有答案