0

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

我有这个页面,我使用 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     

在这种情况下,如果我的开始日期是 2013 年 1 月 1 日,结束日期是 13 年 15 月 1 日,卡号是 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_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
于 2013-09-21T12:12:43.867 回答