我一直有這個問題最困難的時間。我有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