我想从两个表中求和,然后将两个值都求和以获取收入

时间:2018-11-17 15:28:13

标签: php mysql sql

我想按日期对费用表中的(费用金额)和订单表中的(订单金额)求和,然后对两个值求和以求收入

Table 'Expenses'
Fields: expense_amount | expense_date
Data:   1000 | 2018-11-17
        1500 | 2018-11-17
        22 | 2018-11-18

Table 'Order'
Fields: order_amount | order_date
Data:   25000 | 2018-11-17
        10000 | 2018-11-17
        8000  | 2018-11-18

我想要的是按日期总计(expense_amount)AND(order_amount) 然后将这两个值相减即可获得收入

对于单张表,它使用此代码,但

<?php 
  if(isset($_POST["date"]))
  {
  if($_POST["date"] != '')
  {
    $query = "SELECT sum(sub_total) AS total_order_value FROM tbl_order     
    tbl_order.order_customer_id
    WHERE order_date = '".$_POST["date"]."'";
   }
  else
  {
    $query = "SELECT sum(sub_total) AS total_order_value FROM tbl_order";
  }
  $result = mysqli_query($conn, $query);

  while($row = mysqli_fetch_array($result))
  {
    echo "Rs. ";
    echo number_format($row['total_order_value'],2);
  }

  }

?>

2 个答案:

答案 0 :(得分:0)

我建议使用union allgroup by

select dte, sum(expense_amount) as expense_amount,
       sum(order_amount) as order_amount,
       sum(expense_amount) - sum(order_amount) as net
from ((select expense_date as dte, expense_amount, 0 as order_amount
       from expenses
      ) union all
      (select order_date as dte, 0 as expense_amount, order_amount
       from expenses
      ) 
     ) oe
group by dte;

答案 1 :(得分:0)

一种方法是使用两个单独的子查询的联接,这些子查询使用按日期汇总分别查找订单和费用的总和。然后,对于每个日期,我们都可以找到收入。

SELECT
    t1.order_date,
    t1.order_sum - t2.expense_sum AS revenue
FROM
(
    SELECT order_date, SUM(order_amount) AS order_sum
    FROM orders
    GROUP BY order_date
) t1
INNER JOIN
(
    SELECT expense_date, SUM(expense_amount) AS expense_sum
    FROM expenses
    GROUP BY expense_date
) t2
    ON t1.order_date = t2.expense_date;

此答案假定给定日期始终具有订单和费用金额。