0

どこでもチェックしましたが、答えが見つかりませんでした。

このページでは、INNER JOIN を使用して 2 つのテーブルを結合し、それらの値を取得して表示しています。テーブルから値を呼び出すための基準として機能する変数 (開始日、終了日、カード番号など) を取得するために使用するこのフォームがあります。開始日 (例: 1/1/13) と終了日 (例: 15/1/13) の間に特定のカード番号 (例: A300) によって投稿された値を取得できます。私の問題は、開始日と終了日の間に列(ORDERと呼ばれるとしましょう)から値を追加したいということです。

これが私がこれまでに持っているものです:

$sql="SELECT transaction.date, transaction.card_number, orders.order, orders.details FROM transaction INNER JOIN orders USING (transaction_id) WHERE date BETWEEN '$begindate' AND '$enddate' AND card_number='$cardnumber'"; 
$result=mysqli_query($database,$sql);

$sum="SELECT SUM(order) WHERE date BETWEEN '$begindate' AND '$enddate' AND card_number = '$cardnumber'";
$sumresult=mysqli_query($database,$sum) or die(mysql_error());
$sumrow=mysqli_fetch_array($sumresult);

合計をエコーアウトしようとすると、うまくいきません。助けはありますか?

これは私が取得したいものです:

   date     |     card number    |    order

 25/12/12   |       A025         |     550

 1/1/13     |       A300         |     400

 3/1/13     |       A300         |     600

 20/1/13    |       A300         |     250     

この場合、開始日が 1/1/13 で終了日が 15/1/13 で、カード番号が A300 の場合、注文の合計は 1000 になります。

前もって感謝します!

編集::

ここにSQLフィドルがあります:

http://sqlfiddle.com/#!2/ed080/9/0

4

1 に答える 1

0
SELECT  DATE(transaction.date) date, 
        transaction.card_number, 
        SUM(orders.order) totalSum
FROM    transaction 
        INNER JOIN orders 
            USING (transaction_id) 
WHERE   date BETWEEN '$begindate' AND '$enddate' AND 
        card_number='$cardnumber'
GROUP   BY DATE(transaction.date), transaction.card_number

date上記のクエリは、とでレコードをグループ化するため、各日の注文の合計金額を表示しますcard_numberdateただし、指定した範囲内で合計注文を計算する場合は、GROUP BY句内のを削除する必要があります。

SELECT  transaction.card_number, 
        SUM(orders.order) totalSum
FROM    transaction 
        INNER JOIN orders 
            USING (transaction_id) 
WHERE   date BETWEEN '$begindate' AND '$enddate' AND 
        card_number='$cardnumber'
GROUP   BY transaction.card_number
于 2013-09-21T12:12:43.867 に答える