Php 我需要帮助创建SQL查询
我需要拿出一份类似这样的报告: 有三个表:代理、销售和付款。销售和付款通过代理表链接。该报告将显示每个代理商每天的总销售额。它还需要显示代理每天支付的任何款项,并从总销售余额中扣除,以便在任何时间点我们都可以知道代理是否欠业务,反之亦然 我计划解决这个问题的方法是:Php 我需要帮助创建SQL查询,php,mysql,sql,Php,Mysql,Sql,我需要拿出一份类似这样的报告: 有三个表:代理、销售和付款。销售和付款通过代理表链接。该报告将显示每个代理商每天的总销售额。它还需要显示代理每天支付的任何款项,并从总销售余额中扣除,以便在任何时间点我们都可以知道代理是否欠业务,反之亦然 我计划解决这个问题的方法是: 获取每个代理每天的所有销售额(一个查询) 获取每个代理每天的所有付款(一个查询) 对于每个销售、代理和每天检查(代理每天支付每个代理)(循环) 如果找到匹配项,则获取值并用于计算累积总数 否则,只显示相应的销售数据和累计总额
- 获取每个代理每天的所有销售额(一个查询)
- 获取每个代理每天的所有付款(一个查询)
- 对于每个销售、代理和每天检查(代理每天支付每个代理)(循环)
- 如果找到匹配项,则获取值并用于计算累积总数
- 否则,只显示相应的销售数据和累计总额
select a.name, s.sale_date, sum(s.amount), sum(p.amount),
(select sum(amount)
from sales
where agent_id = a.id and sale_date <= s.sale_date) as cum_sales,
(select sum(amount)
from payments
where agent_id = a.id and payment_date <= s.sale_date) as cum_payments
from agents a
join sales s on s.agent_id = a.id
join payments p on p.agent_id = a.id
group by s.agent_id, s.sale_date
order by s.agent_id, s.sale_date
这两个都未经测试,因为我没有数据进行测试。这些都由“代理”连接,如果您提供表详细信息(列名),我可以帮助您编写一个查询来连接这些。请发布表的结构。您需要的是一个带有聚合函数的
JOIN
和groupby
,那么这将是累积总数的问题。您可以发布有关代理表的更多详细信息吗?
select a.name, s.sale_date, sum(s.amount), sum(p.amount),
sum(cs.amount) as cum_sales,
sum(cp.amount) as cum_payments
from agents a
join sales s on s.agent_id = a.id
join payments p on p.agent_id = a.id
join sales cs on cs.agent_id = a.id and cs.sale_date <= s.sale_date
join payments cp on cp.agent_id = a.id and cp.payment_date <= s.sale_date
group by s.agent_id, s.sale_date
order by s.agent_id, s.sale_date