2015-05-29 21 views
1

我有這樣的兩個表:的MySQL&PHP:從兩個不同的表除以兩個數具有相同的日期

表1:TBL_USD_AUD

+----+------------+----------+ 
| id | date  | value | 
+----+------------+----------+ 
| 1 | 2015-04-24 | 1.278400 | 
+----+------------+----------+ 
| 2 | 2015-04-23 | 1.287200 | 
+----+------------+----------+ 
| 3 | 2015-04-22 | 1.288300 | 
+----+------------+----------+ 
| 4 | 2015-04-21 | 1.291500 | 
+----+------------+----------+ 
| 5 | 2015-04-20 | 1.294300 | 
+----+------------+----------+ 

表2:TBL_USD_EUR

+----+------------+----------+ 
| id | date  | value | 
+----+------------+----------+ 
| 1 | 2015-04-24 | 0.923873 | 
+----+------------+----------+ 
| 2 | 2015-04-23 | 0.928333 | 
+----+------------+----------+ 
| 3 | 2015-04-22 | 0.930839 | 
+----+------------+----------+ 
| 4 | 2015-04-21 | 0.934579 | 
+----+------------+----------+ 
| 5 | 2015-04-20 | 0.932575 | 
+----+------------+----------+ 

我該如何選擇這兩種表格:

$x = "SELECT date,rate FROM `currency`.`tbl_usd_aud` WHERE `date` >= (NOW() - INTERVAL 40 DAY)"; 

和:

$f = "SELECT date,rate FROM `currency`.`tbl_usd_eur` WHERE `date` >= (NOW() - INTERVAL 40 DAY)"; 

,然後不知何故,我想獲得在同一日期的foreach值進行以下公式:

if ($x['date'] == $f['date']){ 
    echo "EUR-AUD: ".(1/$x['rate'])*$f['rate']; 
} 
+0

您可以改用'inner join'。並循環記錄而不進行計算。 – RubahMalam

+0

加入可能嗎?... – Andrew

回答

2

您也可以在DB中進行計算:

SELECT a.date, a.rate x, e.rate f, e.rate/a.rate f_over_x 
    FROM tbl_usd_aud a 
    JOIN tbl_usd_eur e 
     ON e.date = a.date 
    WHERE a.date >= CURDATE() - INTERVAL 40 DAY 

N.B.我更喜歡CURDATE()NOW(),因爲它涉及較少的隱式轉換,而且(1/x)*y = y/x

+0

非常感謝 – jQuerybeast

1

這可能會幫助你

SELECT a.date,a.rate,b.rate,(1/a.rate)*b.rate as eur_aud 
FROM tbl_usd_aud a 
LEFT JOIN tbl_usd_eur b on b.date = a.date 
WHERE a.date >= (NOW() - INTERVAL 40 DAY) 
相關問題