2012-04-27 68 views
1

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

你可以从你的标题中删除“左” - 这是完全有可能得到相同的来自内部连接的错误类型。 – 2012-04-27 10:27:40

回答

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 
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 
+0

我已经测试过它,它的工作正常,如果它适合您的答案,可以查看它。 – Addicted 2012-04-27 10:27:37