次の表は、さまざまな通貨間の為替レートを経時的に保存します。
CREATE TABLE `currency_exchange` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`currency_from` int(11) DEFAULT NULL,
`currency_to` int(11) DEFAULT NULL,
`rate_in` decimal(12,4) DEFAULT NULL,
`rate_out` decimal(12,4) DEFAULT NULL,
`exchange_date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
最新の為替レートのリストを取得するには、どのようにクエリを実行すればよいでしょうか?
基本的に、 currency_from列とcurrency_to列の組み合わせを個別の為替レートとして識別し、最新の日付のものを見つけます。
たとえば、次のようなデータがあるとします。
INSERT INTO currency_exchange (id, currency_from, currency_to, rate_in, rate_out, exchange_date) VALUES
(1, 1, 2, 0.234, 1.789, '2012-07-23 09:24:34'),
(2, 2, 1, 0.234, 1.789, '2012-07-24 09:24:34'),
(3, 2, 1, 0.234, 1.789, '2012-07-24 09:24:35'),
(4, 1, 3, 0.234, 1.789, '2012-07-24 09:24:34');
行IDを選択したい:
- 1 - 通貨 1 と 2 の間の最新のレートとして
- 3 - 通貨 2 と 1 の間の最新のレートとして
- 4 - 通貨 1 と 3 の間の最新のレートとして