簡體   English   中英

Mysql - 將 1 個查詢划分為同一表中的另一個查詢

[英]Mysql - Divide 1 query for another one in the same table

一個包含貨幣、匯率、臨時時間的表 - 我想在同一臨時時間內為美元匯率划分一些選定的匯率。 .

CREATE TABLE IF NOT EXISTS `currency_rates` (
   `id` INT NOT NULL AUTO_INCREMENT
 , `currency` VARCHAR(254) NOT NULL
 , `rate` FLOAT NOT NULL
 , `temptime` DATE NOT NULL
 , PRIMARY KEY (`id`)
) ENGINE = MyISAM;


INSERT INTO `currency_rates` 
(currency, rate, temptime)
VALUES 
('USD', '1.232', '2018-03-16'),
('AUD', '133.82', '2018-03-16'),
('CAD', '1.99', '2018-03-16'),
('EUR', '1.6654', '2018-03-16'),
('USD', '1.242', '2018-03-17'),
('AUD', '132.82', '2018-03-17'),
('CAD', '1.79', '2018-03-17'),
('EUR', '1.4654', '2018-03-17'),
('USD', '1.272', '2018-03-19'),
('AUD', '123.82', '2018-03-19'),
('CAD', '1.765', '2018-03-19'),
('EUR', '1.254', '2018-03-19');


$result1 = mysql_query("SELECT currency, rate, temptime  FROM `currency_rates` WHERE currency = 'USD' ORDER BY temptime asc"); 

$result2 = mysql_query("SELECT currency, date, rate FROM `currency_rates` WHERE currency IN ('AUD', 'CAD', 'EUR') ORDER BY temptime asc"); 

$result3 = I want that every rate from $result2 is divided for the USD rate from $result1 with the same temptime. 

謝謝

您可以使用交叉連接美元查詢

$result2 = mysql_query("SELECT a.currency, a.date, a.rate/b.rate
          FROM `currency_rates` a 
          CROSS JOIN  `currency_rates` b 
          WHERE b.currency = 'USD'
          AND  a.currency IN ('AUD', 'CAD', 'EUR') 
          ORDER BY a.temptime asc"); 

如果您需要每個臨時時間的結果(如 RaymondNijland 所建議的)

$result2 = mysql_query("SELECT a.currency, a.date, a.rate/b.rate
          FROM `currency_rates` a 
          INNER JOIN  `currency_rates` b  ON  a.temptime = b.temptime
          AND b.currency = 'USD'
          AND a.currency IN ('AUD', 'CAD', 'EUR') 
          ORDER BY a.temptime asc"); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM