我想按日期对费用表中的(费用金额)和订单表中的(订单金额)求和,然后对两个值求和以求收入
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);
}
}
?>
答案 0 :(得分:0)
我建议使用union all
和group 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;
此答案假定给定日期始终具有订单和费用金额。