MySQL&;PHP:将同一日期的两个不同表中的两个数字分开
我有两张桌子: 表1:TBL\U USD\U AUDMySQL&;PHP:将同一日期的两个不同表中的两个数字分开,php,mysql,loops,foreach,Php,Mysql,Loops,Foreach,我有两张桌子: 表1:TBL\U USD\U AUD +----+------------+----------+ | id | date | value | +----+------------+----------+ | 1 | 2015-04-24 | 1.278400 | +----+------------+----------+ | 2 | 2015-04-23 | 1.287200 | +----+------------+----------+ | 3 |
+----+------------+----------+
| 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\U USD\U 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)";
以及:
然后不知何故,我想得到同一天的foreach值,做如下等式:
if ($x['date'] == $f['date']){
echo "EUR-AUD: ".(1/$x['rate'])*$f['rate'];
}
这可能对你有帮助
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)
您也可以在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
注意:我更喜欢
CURDATE()
而不是NOW()
,因为它涉及较少的隐式转换,而且(1/x)*y=y/x
您可以使用内部联接来代替。不做计算就循环记录。
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