我一直有这个问题最困难的时间。我有2个表格,总共列,我想汇总在一起。他们都有相同的列,我使用两个表格,一个是脚本生成的数据表格,另一个是用户输入的数据,我们需要将它们分开。除了现在我们需要将它们总计在一起。MySql/PHP SUM 2表1查询
表1
+-----------+-----+--------+------+
| date |t_id | t_port | total|
+-----------+-----+--------+------+
|2012-04-01 | 1271| 101 | 80.00|
+-----------+-----+--------+------+
表2
+----------+------+--------+-------+
| date | t_id | t_port | total |
+----------+------+--------+-------+
|2012-04-20| 1271 | 101 | 120.00|
+----------+------+--------+-------+
总应该是$ 200.00
这里是我的查询
"SELECT SUM(cntTotal) as total FROM CBS_WO WHERE (date BETWEEN '$monthSecond' AND '$monthEnd') AND t_port = '$t_port' AND t_id = '$t_id' UNION SELECT SUM(cntTotal) as total FROM CNT_MODS WHERE (date BETWEEN '$monthSecond' AND '$monthEnd') AND t_port = '$t_port' AND t_id = '$t_id'"
此查询似乎在phpMyAdmin中工作,因为我得到2行。 (每个表1个),逻辑上我使用PHP中的WHILE循环将两行添加到一起。在手动回显每一行后,我发现我的第二行没有出现在循环中,但它在查询中出现?
无法弄清楚为什么会发生这种情况,我确信这是愚蠢的,但我已经在这个代码已经超过16小时了,需要一组新的眼睛。
PHP代码
function periodTotal()
{
include('/sql.login.php');
$t_id = "1271";
$t_port = "101";
$date = date("Y-m-d");
# FIND MONTH (DATE)
$monthStart = date("Y-m-d", strtotime(date('m').'/01/'.date('Y').' 00:00:00'));
$monthFirst = date("Y-m-d", strtotime('-1 second',strtotime('+15 days',strtotime(date('m').'/01/'.date('Y').' 00:00:00'))));
$monthSecond = date("Y-m-d", strtotime('-1 second',strtotime('+16 days',strtotime(date('m').'/01/'.date('Y').' 00:00:00'))));
$monthEnd = date("Y-m-d", strtotime('-1 second',strtotime('+1 month',strtotime(date('m').'/01/'.date('Y').' 00:00:00'))));
if ($date = $monthFirst)
{
$sql = $dbh->prepare("SELECT SUM(cntTotal) as total FROM CBS_WO WHERE (date BETWEEN '$monthStart' AND '$monthFirst') AND t_port = '$t_port' AND t_id = '$t_id' UNION SELECT SUM(cntTotal) as total FROM CNT_MODS WHERE (date BETWEEN '$monthStart' AND '$monthFirst') AND t_port = '$t_port' AND t_id = '$t_id'");
$sql->execute();
}
else
{
$sql = $dbh->prepare("SELECT SUM(cntTotal) as total FROM CBS_WO WHERE (date BETWEEN '$monthSecond' AND '$monthEnd') AND t_port = '$t_port' AND t_id = '$t_id' UNION SELECT SUM(cntTotal) as total FROM CNT_MODS WHERE (date BETWEEN '$monthSecond' AND '$monthEnd') AND t_port = '$t_port' AND t_id = '$t_id'");
$sql->execute();
}
while($row = $sql->fetch(PDO::FETCH_ASSOC))
{
$total += $row['total'];
}
return $total;
}
是的,它在sql中完美工作,但我似乎无法在PHP中显示它? – devfunkd 2012-04-21 18:54:51
$ row = $ sql-> fetch(PDO :: FETCH_ASSOC); $ total = $ row ['total']; – devfunkd 2012-04-21 18:55:58
'SELECT SUM(total)AS total FROM('... – sbczk 2012-04-21 19:26:47