需要有关odd Access查询的帮助

时间:2011-06-08 16:43:08

标签: sql ms-access

我有一个现有的Access数据库,其中包含员工的培训记录。如果员工已接受培训或已安排接受培训,则链接表中会有记录。如果没有,就没有记录。我想查询所有未经过某些事情培训的员工,但没有任何记录。

数据库如下:

Table: Trainings   
TrainingID    AutoNumber   
Description   Text   
...

Table: EmployeeTrainings
EmployeeTrainingID     AutoNumber   
TrainingID             Number
EmployeeID             Number
ScheduledDate          Date/Time
...

Table: Employees  
EmployeeID       Number  
FullName         Text  
...

对于没有接受过特定培训培训的员工,我希望得到以下结果:

  

Trainings.Description,Employees.FullName,EMployeeTrainings.ScheduledDate

我怎样才能做到这一点?我需要一些指导。

1 个答案:

答案 0 :(得分:2)

我认为这应该适合你...但是,由于他们没有接受过培训,我们无法为他们编制培训日期,因此我只包括两列...

select
      t.Description,
      emp.FullName,
      et.ScheduledDate
   from
      trainings t
         join employees emp
            left join EmployeeTrainings et
               on emp.EmployeeID = et.EmployeeID
               AND et.TrainingID = t.TrainingID
   where
      t.TrainingID IN ( 1, 3 )
   order by
      t.Description,
      emp.FullName

这应该可以得到你想要的东西......通过LEFT JOIN,它会返回连接左侧的所有条目,并将记录返回到右表。如果右侧没有这样的记录(因此从未安排过的员工),他们的预定日期值将显示为NULL ...对于那些DID找到正确匹配的人,将其日期包含在结果集中。对IN子句中的“Access”语法不肯定......但它应该像在其他SQL引擎中一样工作。