如何使用相同的表创建多个连接?

时间:2016-09-30 18:41:39

标签: sql ms-access join

我正在尝试创建一个查询,该查询将显示所有员工,每位员工所接受的所有培训,以及所有可用的培训(ApplicableTraining),即使员工没有参加培训。 / p>

适用培训示例:

WHMIS
First Aid
CPR
Propane
TDG

示例EmployeeTraining

Sam | WHMIS | 05/03/2011 |05/03/2012
Sam | First AID | 06/09/2010 | 06/09/2011
Sam | CPR | 05/03/2011 | 05/03/2012
Sam | Propane | 12/03/2015| 12/03/2018

期望的结果

Sam | WHMIS | 05/03/2011 |05/03/2012
Sam | First AID | 06/09/2010 | 06/09/2011
Sam | CPR | 05/03/2011 | 05/03/2012
Sam | Propane | 12/03/2015| 12/03/2018
Sam | TDG | |

[http://imgur.com/jMU6fgt][1]

当我尝试创建这些连接时,它告诉我我正在尝试创建模糊连接。

然后我尝试创建一个左键和左键的查询。所有员工的联合和他们所接受的培训。因此,结果表是Employee | Training | Datetaken | Expiry

SELECT ApplicableTraining.AppTraining, 
EmployeeTraining.Employee, 
EmployeeTraining.DateTaken, 
EmployeeTraining.Expiry

FROM ApplicableTraining LEFT JOIN EmployeeTraining ON ApplicableTraining.AppTraining = EmployeeTraining.Training;

通过此查询,我尝试创建另一个查询,该查询将此适用的培训(所有可用培训的列表)连接到此查询。但是,它没有返回员工没有参加的任何培训课程。例如:如果我没有接受过CPR培训,我希望记录显示为“ME | CPR | | |

1 个答案:

答案 0 :(得分:0)

我的建议是尝试在Employee和ApplicableTraining之间进行CROSS JOIN。然后将此查询连接到所有训练结果查询,因为它从图形中看起来两个表都保持连接到所有这些查询。这应该归还给每位员工和所有可用的培训,并将培训结果显示在他们所在的位置。

我认为您首先想要将您的培训结果合并在一起,以避免重复行。