繁体   English   中英

多个左连接导致错误总和

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM