2012-04-27 60 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