我正在构建一个查询,我需要连接三个表。
这是我的表格
agents(id, full_name)
agent_orders(id, agent_id, [..])
agent_targets(id, agent_id, month_target, amount)
month_target
中的agent_orders
是DATE
字段,我只对月份和年份感兴趣,但为方便起见,我添加了这一天。
这是我的查询
SELECT
agents.full_name,
COUNT(DISTINCT orders.id) total_orders,
COUNT(DISTINCT yearly_targets.id) nr_yearly_targets,
SUM(yearly_targets.amount) yearly_target,
month_target.amount monthly_target
FROM agent_targets yearly_targets
LEFT JOIN agents ON yearly_targets.agent_id = agents.id AND YEAR(yearly_targets.month) = YEAR(CURRENT_DATE())
LEFT JOIN agent_targets month_target ON month_target.agent_id = agents.id AND MONTH(month_target.month) = MONTH(CURRENT_DATE()) AND YEAR(month_target.month) = YEAR(CURRENT_DATE())
LEFT JOIN agent_orders orders ON orders.agent_id = agents.id
GROUP BY agents.id
问题是yearly_target
不是正确的数量。其他所有数据都是正确的。我尝试了几件事,当我加入orders table
时会出现问题。如果我没有加入订单表,那么数据是正确的。
我该如何解决这个问题? yearly_target
总是一个巨大的数字,并不代表正确的价值。
谢谢