私はこの問題で最も困難な時間を過ごしてきました。私は一緒に合計したい合計の列を持つ2つのテーブルがあります。彼らはどちらも同じ列を持っている、私は2つのテーブルを使用して1つのスクリプトのデータのテーブルを生成し、もう1つはユーザーが入力したデータであり、我々はそれらを分離する必要があります。それ以外は、それらを合計(合計)する必要があります。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つ)、論理的に私は2つの行を一緒に追加するためにPHPでWHILEループを使用しました。手動で各行をエコーした後、2番目の行がループ内に表示されていないことがわかりましたが、クエリではそれが実行されていますか?
これはなぜ起こっているのか分かりませんが、私はそれが愚かなものだと確信していますが、私はこのコードですでに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
$ row = $ sql-> fetch(PDO :: FETCH_ASSOC); $ total = $ row ['total']; – devfunkd
'合計SUMを選択する(' ... – sbczk