我仍然是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;