2016-06-16 215 views
0

我需要幫助。我試圖從兩個表中獲得一名僱員的工資和應稅津貼,一個持有員工工資,另一個持有他的津貼。左連接SQL查詢

這兩個表共享一個共同的列,即EmpID

我的代碼只返回一個結果爲有稅收津貼的僱員。

這是我曾嘗試:

select 
    Employee.EmpID, amount as Allw, bSalary 
from 
    Employee 
left join 
    EmployeeAllowance on (Employee.EmpID = EmployeeAllowance.EmpID) 
where 
    taxStatus = 1 
    and Employee.EmpID = 'PC899' 
+0

可能重複的[SQL JOIN和不同類型的JOIN](http://stackoverflow.com/questions/17946221/sql-join-and-different-types-of-joins) –

+2

這是因爲你只是返回記錄'WHERE taxStatus = 1' –

+0

查詢看起來是正確的,我只會問WHERE。嘗試刪除一個或兩個過濾器 –

回答

2

沒有看到你的表,我的猜測是,這個問題是你在你的WHERE聲明taxStatus = 1。這將刪除EmployeeAllowance表沒有員工條目的記錄。你可以改變你的查詢只從你的EmployeeAllowancetaxStatus=1記錄之前在左側的接合部它:

SELECT Employee.EmpID, 
    amount AS Allw, 
    bSalary 
FROM Employee 
LEFT JOIN EmployeeAllowance ON 
    Employee.EmpID = EmployeeAllowance.EmpID AND 
    employeeAllowance.taxStatus = 1 
WHERE Employee.EmpID = 'PC899' 

這相當於做一個子查詢加盟像以前一樣以限制表:

SELECT Employee.EmpID, 
    amount AS Allw, 
    bSalary 
FROM Employee 
LEFT JOIN (SELECT * FROM EmployeeAllowance WHERE taxStatus = 1) as ea ON 
    Employee.EmpID = ea.EmpID 
WHERE Employee.EmpID = 'PC899' 

這只是第一個稍微不詳細。