在我的左表中,我拥有所有EMP信息以及所有可能的资产,因此所有员工都被分配参加数据库中列出的所有课程。AND正确的表我只有参加或正在参加课程的员工。(两个表均为查询,其结果正确)
我想在两个表(查询)之间进行Left联接,所以我从Left-Table联合Right-Table中获得了所有具有新列的雇员(完成日期和完成状态)!
但是,当我进行左联接时,它将返回我的所有行,并用“完成状态”或“进行中”的“完成状态”的两种可能性来填充空白。当我添加“完成日期”并返回一些随机日期并填写“完成日期”的所有行并对以下资产标题重复这些行时,会发生最愚蠢的事情。
我的结果应该是所有带有所需课程的EMP联合课程的清单,其状态为课程,此人是否已完成课程,我希望所有不相关的行都为空。您是否愿意检查我的代码,并让我知道什么可能导致此问题?谢谢
SELECT qryEmployeeCourse.[EMP ID], qryEmployeeCourse.Name, qryEmployeeCourse.Role, qryEmployeeCourse.Location, qryEmployeeCourse.Region, qryEmployeeCourse.[Asset ID], qryEmployeeCourse.[Asset Title], qryCourseStatus.[Completion Status]
FROM qryEmployeeCourse LEFT JOIN qryCourseStatus ON qryEmployeeCourse.[EMP ID] = qryCourseStatus.Username
GROUP BY qryEmployeeCourse.[EMP ID], qryEmployeeCourse.Name, qryEmployeeCourse.Role, qryEmployeeCourse.Location, qryEmployeeCourse.Region, qryEmployeeCourse.[Asset ID], qryEmployeeCourse.[Asset Title], qryCourseStatus.[Completion Status]
ORDER BY qryEmployeeCourse.Name, qryEmployeeCourse.Role, qryEmployeeCourse.Location;
http://i.stack.imgur.com/0zNVz.png这是我的表格和结果的图片。
在我看来,您的LEFT JOIN应该是
qryCourseStatus ON qryEmployeeCourse.[EMP ID] = qryCourseStatus.Username AND qryEmployeeCourse.AssetID = qryCourseStatus.AssetID
否则,您将获得交叉联接(对于每个员工,qryEmployeeCourse中的所有行与qryCourseStatus中的所有行)。
在屏幕快照的第一组结果中,您只会得到两行,因为雇员在qryCourseStatus中的记录只有两个不同的状态Completed
和In progress
,并且您的组将删除所有其他重复项。
在第二组结果中,您将获得更多的行,因为要添加Completion Date
的行对此员工有7个不同的值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句