[英]How to get records from both tables using ms access query
我在Access中有2个表
我想显示与雇员薪水表链接的雇员表中的所有雇员,以链接两个表,两个表中的ID为coluqEmpID
在第二张表中,我有一个日期列。 我需要一个查询,该查询应使用特定日期从两个表中获取记录
我尝试了以下查询:
select coluqEID as EmployeeID , colEName as EmployeeName,"" as Type, "" as Amt
from tbl_Master_Employee
union Select b.coluqEID as EmployeeID, b.colEName as EmployeeName, colType as Type, colAmount as Amt
from tbl_Emp_Salary a, tbl_Master_Employee b
where a.coluqEID = b.coluqEID and a.colDate = #12/09/2013#
但是,它显示重复项。
查询4
EmployeeID EmployeeName Type Amt
1 LAKSHMANAN
1 LAKSHMANAN Advance 100
2 PONRAJ
2 PONRAJ Advance 200
3 VIJAYAN
4 THIRUPATHI
5 VIJAYAKUMAR
6 GOVINDAN
7 TAMILMANI
8 SELVAM
9 ANAMALAI
10 KUMARAN
我将如何重写查询以避免重复,或者不显示重复的另一种方式是什么?
查询的问题是,当您想要的是联接时,您正在使用联合。 工会首先要列出所有员工的第一部分:
select coluqEID as EmployeeID , colEName as EmployeeName,"" as Type, "" as Amt from tbl_Master_Employee
然后将所有具有特定日期薪水的员工记录添加到该列表中。
Select b.coluqEID as EmployeeID, b.colEName as EmployeeName, colType as Type,
colAmount as Amt
from tbl_Emp_Salary a, tbl_Master_Employee b
where a.coluqEID = b.coluqEID and a.colDate = #12/09/2013#
您的目标是获取所有员工的清单,并且仅显示具有特定日期的员工的薪资信息吗? 一些样本数据将很有用。 在这里假设数据: SQL Fiddle此查询应创建所需的内容。
Select a.coluqEID as EmployeeID, colEName as EmployeeName,
b.colType as Type, b.colAmount as Amt
FROM tbl_Master_Employees as a
LEFT JOIN (select coluqEID, colType, colAmount FROM tbl_EMP_Salary
where colDate = '20130912') as b ON a.coluqEID = b.coluqEID;
第一步是创建一个选择,该选择将按日期获得您想要的薪水。 然后,您可以像执行单独的查询一样对此进行连接。 之所以使用LEFT JOIN
是因为您想要来自一侧的所有记录(员工),而只希望来自另一侧的符合您条件的记录(工资)。
我认为您需要加入,但是关于唯一名称的问题。
select **DISTINCT** coluqEID as EmployeeID
添加唯一运算符将仅给出唯一返回的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.