Mysql 多个左连接导致错误的和
我有一个MySQL数据库,在那里我存储了船上的员工和他们的工作经验。我得到了一张表,用于存储员工,一张表用于存储他们以前在运输部门的工作(工作类型,年份),另一张表用于存储他们以前的其他工作(工作类型,年份)。所有这些都使用员工的ID进行连接。当我抓到一个员工时,我希望得到他的运输和一般经验的总和,但是select查询返回的一般经验的总和是错误的。我知道这是由多个连接造成的,因为表没有正确连接,但我不确定如何修复这一问题。你能帮帮我吗 另外,我想用一个查询来完成这个任务 我使用的查询示例Mysql 多个左连接导致错误的和,mysql,join,sum,left-join,Mysql,Join,Sum,Left Join,我有一个MySQL数据库,在那里我存储了船上的员工和他们的工作经验。我得到了一张表,用于存储员工,一张表用于存储他们以前在运输部门的工作(工作类型,年份),另一张表用于存储他们以前的其他工作(工作类型,年份)。所有这些都使用员工的ID进行连接。当我抓到一个员工时,我希望得到他的运输和一般经验的总和,但是select查询返回的一般经验的总和是错误的。我知道这是由多个连接造成的,因为表没有正确连接,但我不确定如何修复这一问题。你能帮帮我吗 另外,我想用一个查询来完成这个任务 我使用的查询示例 SEL
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
我已经对它进行了测试,它运行良好,如果它适合你的答案,你可以检查它。你可以从你的标题中删除“left”这个词-完全有可能从内部联接中得到相同类型的错误。
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