多个左连接导致错误总和

时间:2012-04-27 09:57:38

标签: mysql join sum left-join

我有一个MySQL数据库,用于存储船员和他们的工作经验。我有一张桌子用于存放员工,一张桌子用于存放他们以前的工作在运输部门(工作类型,年份),另一张桌子用于存储他们以前的其他工作(滚刀类型,年份)。所有这些都使用员工的ID进行连接。当我找到一名员工时,我想得到他的运费和一般经验的总和,但是选择查询会返回错误的总和。我知道这是由多个连接引起的,因为表没有正确连接,但我不知道如何解决这个问题。请你帮助我好吗?

P.S。我想通过一个查询来做到这一点。

我使用的查询示例

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

2 个答案:

答案 0 :(得分:3)

也许是这样的:

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

答案 1 :(得分:0)

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