我有四个表部门,团队,费用和收入。MY sql sumif return double count
出发表:
id depart
团队表:
id name depart_id
费用表:
id team_id expense_type amount date
和收入表:
id team_id earning_type earning_peace date
我想计算离职总费用总额和总收入。我使用这个查询:
SELECT d.id, d.depart,
SUM(if(`earning_type` = 1, earning_peace, 0)) as earning_peace1,
SUM(if(`earning_type` = 2, earning_peace, 0)) as earning_peace2,
SUM(if(`earning_type` = 3, earning_peace, 0)) as earning_peace3,
SUM(if(`earning_type` = 4, earning_peace, 0)) as earning_peace4,
SUM(if(`expense_type` = 1, amount, 0)) as `expense1`,
SUM(if (`expense_type` = 2, amount, 0)) as expense2,
SUM(if (`expense_type` = 3, amount, 0)) as expense3,
SUM(if (`expense_type` = 4, amount, 0)) as expense4
FROM depart d INNER JOIN team m ON d.id = m.depart_id
LEFT JOIN earning e ON m.id = e.team_id
LEFT JOIN expense ex ON ex.team_id = m.id
GROUP BY d.id
但是查询返回一些离开的总收益的双重金额。这个查询中的错误有什么帮助?
您正在创建一个多分支连接树,其中d-> m-> e和d-> m-> ex。这可能会导致这样的奇怪结果。 –
@Marc B是的,但是解决方案是什么? – Zia
不要做多分支连接。做一个'select * from ....'没有总和,你会发现当你做多分支时结果看起来有多疯狂。 –