[英]Multiple Left Joins cause Wrong Sum
我有一个MySQL数据库,我可以存储船员和他们的工作经验。 我有一张桌子用于存放员工,一张桌子用于存放他们以前的工作在运输部门(工作类型,年份),另一张桌子用于存储他们以前的其他工作(滚刀类型,年份)。 所有这些都使用员工的ID进行连接。 当我找到一名员工时,我想得到他的运费和一般经验的总和,但是选择查询会返回错误的总和。 我知道这是由多个连接引起的,因为表没有正确连接,但我不知道如何解决这个问题。 请你帮助我好吗?
PS我想用一个查询来做这件事。
我使用的查询示例
SELECT id , name , SUM( s_exp.years ) , SUM ( g_exp.years )
FROM employees
LEFT JOIN s_exp ON employees.id = s_exp.id ,
LEFT JOIN g_exp ON employees.id = g_exp.id
GROUP BY employees.id
也许是这样的:
SELECT id , name ,
(
SELECT
SUM(s_exp.years)
FROM
s_exp
WHERE
employees.id = s_exp.id
) AS s_total_years,
(
SELECT
SUM(g_exp.years)
FROM
g_exp
WHERE
employees.id = g_exp.id
) AS g_total_years,
FROM employees
Select id, sum(g_exp.years) GE, sum(s_exp.years) SE
From s_exp Natural Join g_exp
Where id = (Select id From employee Where name = ?)
group by id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.