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