左连接的SQL查询

时间:2016-06-16 18:04:15

标签: sql sql-server

我需要帮助。我试图从2个表中获得员工的工资和应税津贴,一个持有员工工资,另一个持有他的津贴。

这两个表共享一个公共列,即login,aspx

我的代码仅返回具有应税免税额的员工的结果。

这就是我的尝试:

EmpID

1 个答案:

答案 0 :(得分:2)

如果没有看到您的表格,我的猜测就是您的taxStatus = 1声明中的WHERE问题。这将删除EmployeeAllowance表没有员工条目的记录。您可以将查询更改为仅从taxStatus=1之前中提取EmployeeAllowance个记录,然后将其加入:

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'

这只是第一个不那么冗长。