在(BETWEEN)所选变量中查找数据的SUM

时间:2013-09-21 11:46:39

标签: php mysql sql sum

到处检查但我找不到答案。

我有这个页面,我使用INNER JOIN将两个表连接在一起,获取它们的值并显示它们。我有这种形式,我用来获取变量(例如开始日期和结束日期和卡号),这些变量将作为从表中调用值的标准。我能够在开始日期(例如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

1 个答案:

答案 0 :(得分: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

上面的查询将显示自datecard_number对记录进行分组以来每天的订单总量。但是,如果您想要计算指定范围内的总订单,则需要删除date子句中的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