MySQL加入三个表,结果偏斜

时间:2017-11-02 15:19:29

标签: mysql join left-join

我正在构建一个查询,我需要连接三个表。

这是我的表格

agents(id, full_name)
agent_orders(id, agent_id, [..])
agent_targets(id, agent_id, month_target, amount)

month_target中的agent_ordersDATE字段,我只对月份和年份感兴趣,但为方便起见,我添加了这一天。

这是我的查询

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总是一个巨大的数字,并不代表正确的价值。

谢谢

0 个答案:

没有答案