【问题标题】:How to get records from both tables using ms access query如何使用 ms 访问查询从两个表中获取记录
【发布时间】:2013-12-12 10:12:06
【问题描述】:

我在 Ms Access 中有 2 个表

  1. tbl_Master_Employess
  2. tbl_Emp_Salary

我想显示与员工工资表链接的员工表中的所有员工 要链接两个表,两个表中的 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 

我将如何重写我的查询以避免重复,或者有什么不同的方式不显示重复?

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    您的查询的问题在于,当您想要的是连接时,您正在使用联合。工会首先要列出第一部分的所有员工:

    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 是因为您想要来自一侧的所有记录,即员工,并且只需要来自另一侧的符合您的条件的记录,即您的薪水。

    【讨论】:

      【解决方案2】:

      我相信您需要加入,但是关于您关于唯一名称的问题。

      select **DISTINCT** coluqEID as EmployeeID 
      

      添加 distinct 运算符只会给出唯一返回的结果。

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-09
        • 2014-01-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多