0

次のようなデータを含む複数の行のコレクションを持つデータベースがあります。

Username: BillyBob
TotalPrice: 19.99
CreationDate: 2012-02-20 14:30:58

このようなことを行うPHPでSQLステートメントを実行する必要があります。

$sql = mysql_query(" Add up Total Price Where Username='BillyBob' Where CreationDate is within this month ");

どうすればそのようなことをするでしょうか。また、過去30日間、先週、特定の日付範囲などもやりたい.

それは可能ですか?

4

3 に答える 3

2

エラーと入力 (特定の月の合計を返す) の処理を​​追加する必要があるだけです。興味のある期間で monthStart と monthEnd のロジック/値を変更するだけです。

//Parameters for query
$month = '2012-02';
$username = 'BillyBob';

//Make date start and end
$monthStart = $month.'-01 00:00:00';
$monthEnd = $month.'-'.date('t', strtotime($monthStart)).' 23:59:59';

//Make the query
$query = sprintf("
    SELECT SUM(TotalPrice)
    WHERE Username = '%s'
    AND CreationDate >= '%s'
    AND CreationDate <= '%s'",
    mysql_real_escape_string($username),
    mysql_real_escape_string($monthStart),
    mysql_real_escape_string($monthEnd)
);

$result = mysql_query($query);

if ($result) {
    if (mysql_num_rows($result) == 1) {
        //Output / process number e.g.:
        list($total) = mysql_fetch_num($result);
        echo 'Total for '.$username.' from '.date('l, jS F Y', strtotime($monthStart)).' to '.date('l, jS F Y', strtotime($monthEnd)).' = &pound;'.number_format($total, 2);
    } else {
        //error handling
    }
} else {
    //error handling
}
于 2012-04-16T15:50:23.380 に答える
0

http://www.tizag.com/mysqlTutorial/mysqlsum.php

mysql sum を使用できます。こちらを参照して、データベース構造に適用してください

おそらく Select *,sum(totalPrice) from tbl where Username='BillyBob' and CreationDate <'2012-02-20 14:30:58' のようなもの

于 2012-04-16T15:40:01.683 に答える
0

私はこのようなことを試してみます(テストされていません):

$sql = mysql_query("SELECT SUM(TotalPrice) FROM myTable WHERE Username = 'BillyBob' AND CreationDate BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()");
于 2012-04-16T15:40:04.983 に答える