0

テーブルには次の情報があります。

日付|ベンダー|売上|パーセント|
--------------------------
2009-03-03 | 10 | 13.50 | 1.30 |
2009-03-10 | 10 | 42.50 | 4.25 |
2009-03-03 | 21 | 23.50 | 2.30 |
2009-03-10 | 21 | 32.50 | 3.25 |
2009-03-03 | 18 | 53.50 | 5.30 |
2009-03-10 | 18 | 44.50 | 4.45 |

次のように、日付に応じて別々のテーブルに並べ替えたいと思います。

日付|ベンダー|売上|パーセント|
--------------------------
2009-03-03 | 10 | 13.50 | 1.30 |
2009-03-03 | 18 | 53.50 | 5.30 |
2009-03-03 | 21 | 23.50 | 2.30 |

日付|ベンダー|売上|パーセント|
--------------------------
2009-03-10 | 10 | 42.50 | 4.25 |
2009-03-10 | 18 | 44.50 | 4.45 |
2009-03-10 | 21 | 32.50 | 3.25 |

私はこれを行うことはできますが、次のように個別のテーブルごとの合計を取得することはできません。

日付|ベンダー|売上|パーセント|
--------------------------
2009-03-03 | 10 | 13.50 | 1.30 |
2009-03-03 | 18 | 53.50 | 5.30 |
2009-03-03 | 21 | 23.50 | 2.30 |
2009-03-03の総売上高=$90.50
2009-03-03の合計パーセント=8.90ドル

日付|ベンダー|売上|パーセント|
--------------------------
2009-03-10 | 10 | 42.50 | 4.25 |
2009-03-10 | 18 | 44.50 | 4.45 |
2009-03-10 | 21 | 32.50 | 3.25 |
2009-03-03の総売上高=$119.50
2009-03-03の合計パーセント=11.95ドル

個々のテーブルではなく、すべての合計を取得できます。これが私のコードです:

    <?php
$con = mysql_connect("localhost", $dbUser, $dbPassword);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("beans", $con);

$result = mysql_query("SELECT * FROM Deposits WHERE market = '4' ORDER BY eventdate, vendor ASC") or die(mysql_error());

$dateChk = 0;

while($row = mysql_fetch_array($result))
{ 
    $date = $row["eventdate"];
    $liclass = $row["vendor"];
    $url = $row["trxid"];
    $amountdep = $row["amount"];
    $depcheck = $row["checkno"];
       $deposit_Total = $deposit_Total + $amountdep;
       $deposit_3Total = $deposit_3Total + $depcheck;
       $deposit_3 = $amountdep / 100;
       $dep_percent = $deposit_3 * 3;
       $depper_Total = $depper_Total + $dep_percent;
       $week = date("W", db_date_to_timestamp($date));
       $year = date("Y", db_date_to_timestamp($date));        


If($dateChk != $week)
{     

        echo "<table class=\"adverts\" width=\%100\" cellpadding=\"4\">\n";
        echo "<tr><th>Date</th><th>Vendor</th><th>Total Sales</th><th>3% Due</th><th>Week</th></tr>\n";
        echo "<tr>";  
        echo "<td>$date</td>\n";     
        echo "<td>$liclass</td>\n";           
        echo "<td>$ $amountdep</td>\n";               
        echo "<td>$ $depcheck</td>\n";
        echo "<td>$week</td>\n";      
        echo "</tr>";

}
else 
{
        echo "<tr>";  
        echo "<td>$date</td>\n";   
        echo "<td>$liclass</td>\n";                 
        echo "<td>$ $amountdep</td>\n";               
        echo "<td>$ $depcheck</td>\n";
        echo "<td>$week</td>\n";             
        echo "</tr>";

}
$dateChk = $week;
} 
        echo "</table>\n";
        echo "<p><b>Total reported Market Sales are $ " . $deposit_Total . "</b></p>\n";
        echo "<p><b>3 percent of Total reported Market Sales are $  " . $deposit_3Total . "</b></p>\n";
?>
4

4 に答える 4

1

(編集:投稿したときに申し訳ありませんが、クエリで必要なことがわかりました!)

$dateChk = 0;
$firstRow = 1;

while($row = mysql_fetch_array($result))
{ 
    $date = $row["eventdate"];
    $liclass = $row["vendor"];
    $url = $row["trxid"];
    $amountdep = $row["amount"];
    $depcheck = $row["checkno"];
       $deposit_Total = $deposit_Total + $amountdep;
       $deposit_3Total = $deposit_3Total + $depcheck;
       $deposit_3 = $amountdep / 100;
       $dep_percent = $deposit_3 * 3;
       $depper_Total = $depper_Total + $dep_percent;
       $week = date("W", db_date_to_timestamp($date));
       $year = date("Y", db_date_to_timestamp($date));        

If($dateChk != $week)
{         
    if($firstRow == 0)          
    {
        echo "</table>\n";
        echo "<p><b>Total reported Market Sales are $ " . $deposit_week_Total . "</b></p>\n";            
        echo "<p><b>3 percent of Total reported Market Sales are $  " . $deposit_week_3Total . "</b></p>\n";
        $deposit_week_Total = 0;            
        $deposit_week_3Total = 0;

    }else 
    {
        $firstRow = 0;
    }

        echo "<table class=\"adverts\" width=\%100\" cellpadding=\"4\">\n";
        echo "<tr><th>Date</th><th>Vendor</th><th>Total Sales</th><th>3% Due</th><th>Week</th></tr>\n";
        echo "<tr>";  
        echo "<td>$date</td>\n";     
        echo "<td>$liclass</td>\n";           
        echo "<td>$ $amountdep</td>\n";               
        echo "<td>$ $depcheck</td>\n";
        echo "<td>$week</td>\n";      
        echo "</tr>";

}
else 
{
        echo "<tr>";  
        echo "<td>$date</td>\n";   
        echo "<td>$liclass</td>\n";                 
        echo "<td>$ $amountdep</td>\n";               
        echo "<td>$ $depcheck</td>\n";
        echo "<td>$week</td>\n";             
        echo "</tr>";

}
$dateChk = $week;
$deposit_week_Total = $deposit_week_Total + $amountdep;          
$deposit_week_3Total = $deposit_week_3Total + $depcheck;
} 
        echo "</table>\n";
        echo "<p><b>Total reported Market Sales are $ " . $deposit_Total . "</b></p>\n";
        echo "<p><b>3 percent of Total reported Market Sales are $  " . $deposit_3Total . "</b></p>\n";
?>
于 2009-09-10T19:17:32.393 に答える
0

SQL

"SELECT date, SUM(sales) FROM Deposits WHERE market = '4' GROUP BY date"

合計(売上)の代わりに、独自の計算を使用する必要があります。それらをモデルに入れることをお勧めします。

于 2009-09-10T19:17:39.617 に答える
0

これは役に立ちますか?

http://www.plus2net.com/sql_tutorial/sql_sum.php

SELECT SUM (sales) FROM `table_name` WHERE `date` = '$date_you_want'

私の以下のコメントから:

SELECT SUM (sales) FROM `table_name` WHERE `date` <= '$start_date_of_week' AND `date` >= '$end_date_of_week'

つまり、基本的にWHEREの日付は、必要な週の開始と終了を表す2つの日付よりも小さい日付と大きい日付です...

または...mysqlの値に日数を追加することもできると思います

SELECT SUM(sales)FROM table_name WHERE date LIKE'$ yyyy-mm-dd%'...日を追加するためのDATE_ADDコード..またはINTERVAL。

于 2009-09-10T19:22:52.263 に答える
0

GROUP BY WITH ROLLUPを使用すると、これらの合計を直接取得できます。

于 2009-09-11T00:14:55.047 に答える