我正在尝试创建一个查询,该查询将显示所有员工,每位员工所接受的所有培训,以及所有可用的培训(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 | |
当我尝试创建这些连接时,它告诉我我正在尝试创建模糊连接。
然后我尝试创建一个左键和左键的查询。所有员工的联合和他们所接受的培训。因此,结果表是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 | | |
答案 0 :(得分:0)
我的建议是尝试在Employee和ApplicableTraining之间进行CROSS JOIN。然后将此查询连接到所有训练结果查询,因为它从图形中看起来两个表都保持连接到所有这些查询。这应该归还给每位员工和所有可用的培训,并将培训结果显示在他们所在的位置。
我认为您首先想要将您的培训结果合并在一起,以避免重复行。