0

SQL クエリから連想配列に要素を追加し、以下に示すようにそれらを出力しています。

foreach ($db->query($sql) as $row)
            {
?>      
                <p>
                <?php
                //Print details of each row 
                echo  "Sale Date: " . $row['saleDate'] . "<br />" . 
                      "Sale Price: " . $row['salePrice'] . "<br />" . 
                      "Buyers Email: " . $row['userEmail'] . "<br />";
                 ?> 
                </p>

SQL クエリに一致する要素の salePrice の合計を取得できるようにしたいと考えています。SQL sum コマンドを使用して、sql の salesPrice 列全体の合計を取得できることはわかっていますが、クエリに一致する要素の合計のみを表示したいと考えています。これを行う簡単な方法はありますか?

ありがとう。

4

6 に答える 6

2
$summary = 0;
foreach ($db->query($sql) as $row) {
?>      
<p>
<?php
//Print details of each row 
echo  "Sale Date: " . $row['saleDate'] . "<br />" . 
                      "Sale Price: " . $row['salePrice'] . "<br />" . 
                      "Buyers Email: " . $row['userEmail'] . "<br />";
$summary += $row['salePrice'];
?> 
</p>
<?
}
echo 'Summary: '.$summary;
?>
于 2012-04-16T10:23:25.310 に答える
1
$sum = 0;
foreach ($db->query($sql) as $row)
            {
?>      
                <p>
                <?php
                $sum +=  floatval($row['salePrice']);
                //Print details of each row 
                echo  "Sale Date: " . $row['saleDate'] . "<br />" . 
                      "Sale Price: " . $row['salePrice'] . "<br />" . 
                      "Buyers Email: " . $row['userEmail'] . "<br />";
                 ?> 
                </p>

この $sum 変数を計算に使用します

于 2012-04-16T10:22:07.417 に答える
1

そのコードをSQLクエリにのみ追加し、クエリでのみsum(yourfield)を取得できます。または、すべての $row をリストし、選択した価格を合計したい場合は、

$sum = 0;
foreach ($db->query($sql) as $row)
        {
?>      
            <p>
            <?php
            if()// your condition here
            {
                $sum +=  floatval($row['salePrice']);
            }
            //Print details of each row 
            echo  "Sale Date: " . $row['saleDate'] . "<br />" . 
                  "Sale Price: " . $row['salePrice'] . "<br />" . 
                  "Buyers Email: " . $row['userEmail'] . "<br />";
             ?> 
            </p>
于 2012-04-16T10:28:29.337 に答える
1

これは mysql で簡単に行うこともできます (より高速な場合もあります)。

次のようなデータ構造を想定します。

CREATE TABLE tbl_sales (
    buyers_email VARCHAR(50), /* probably should make this foreign key of tbl_buyer */
    sale_price DECIMAL(7,2),
    sale_date TIMESTAMP
);

このような $sql クエリは次のようになります。

SELECT SUM(sale_price) AS total_sale FROM tbl_sales;

次にPHPで:

$query = $dbh -> exec ($sql);
$query -> setFetchMode(PDO::FETCH_ASSOC);
$results = $query -> fetchAll();

$total = $results[0]["total_sale"];
于 2012-04-16T10:30:04.443 に答える
1

適切なジョブに適切なツールを使用する必要があると思います..呼び出しMySQLているため、すでにSUM機能があります

SELECT SUM(salePrice) as total 

それは仕事をはるかに速く終わらせるでしょう

于 2012-04-16T10:32:32.187 に答える
0

これを行う最も簡単な方法は、sql コマンドを使用することです。

SELECT SUM(salePrice) as sum

次に sum を呼び出すと、連想配列に一致する要素の salePrice の合計が得られます

于 2012-04-16T10:49:08.517 に答える