1

我有一个 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
4

2 回答 2

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
于 2012-04-27T10:02:39.770 回答
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
于 2012-04-27T10:23:26.527 回答