単一のSQLクエリで複数の行を合計して選択し、そのようにループしながら印刷することは可能ですか、それとも別の解決策ですか:
$query = mysql_query("SELECT SUM(Total), * FROM table");
while ($fetch = mysql_fetch_row($query)) {
echo $fetch[a];
echo $fetch[b];
echo $fetch[c];
}
合計を計算するサブクエリで JOIN を使用します。
SELECT SumTotal, a.*
FROM Table a
JOIN (SELECT SUM(Total) SumTotal
FROM Table) b
@ 491243が提案したようにそれを行うことができます
SELECT (SELECT SUM(Total) FROM `table`) AS totalSum, * FROM `table`
ただし、データベースから選択している各行の列がSQL Engine
計算され、結果が列フィールドに同じ値を持つ新しい列が送信されるため、これはお勧めできません。sum
total
php
totalSum
2つのクエリを実行することをお勧めします。1 つは行を選択するためのもので、もう 1 つは合計を取得するためのものです。
GROUP BY句を使用します。
$query = mysql_query("SELECT *,SUM(Total) as TotalSUM FROM table GROUP BY Total");
while ($fetch = mysql_fetch_row($query)) {
echo $fetch[a];
echo $fetch[b];
echo $fetch[c];
}
通常、グループごとに合計できるように列ごとにグループ化し、この例の各 category_id に対して個別の行を提供します。
SELECT category_id, SUM(price) as totalprice
FROM products
GROUP BY category_id