【发布时间】:2014-06-30 05:52:49
【问题描述】:
在我的左表上,我将所有 EMP 信息与所有可能的资产联合起来,因此所有员工都被分配参加数据库中列出的所有课程。和正确的表我只有已经参加或正在参加课程的员工。(两个表都是查询并且它们的结果都是正确的)
我想在两个表(查询)之间进行左连接,所以我从左表联合右表中获取所有员工与新列(完成日期和完成状态)!
但是,当我进行左连接时,它会返回我的所有行并用完成状态的两种可能性填充空白,即已完成或正在进行中)。最愚蠢的事情发生在我添加完成日期并返回一些随机日期并填充完成日期的所有行并为以下资产标题重复这些行时。
我的结果应该是所有 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 这是我的表格和结果的图片。
【问题讨论】:
-
或许你只需要选择
CompletionDate最新的记录 -
@Cha 不会有任何区别 :( 仍然像交叉连接一样
-
如果它看起来是交叉连接,那么您连接的列不够多,或者您对数据基数的假设不正确。从您的屏幕截图和描述中很难判断哪个是您的问题,因为我无法弄清楚每个表上的独特约束是什么。为什么不发布每个源查询中的“Adebule”样本?
标签: sql ms-access ms-access-2007 ms-access-2010