当前位置: 首页 > 知识库问答 >
问题:

Left Join不会将不匹配的行返回为Null

谭繁
2023-03-14

在我的左表中,我有所有EMP信息和所有可能的资产,所以所有员工都被分配参加数据库中列出的所有课程。在正确的表格中,我只有参加过或正在参加课程的员工。(两个表都是查询,结果都是正确的)

我想在两个表之间进行左连接(查询),这样我就可以让左表中的所有员工使用新列(完成日期)连接右表

然而,当我离开join时,它会返回我的所有行,并用两种可能的完成状态(已完成或正在进行)填充空格。最愚蠢的事情发生在我添加完成日期并返回一些随机日期,填充所有行作为完成日期,并重复这些行作为以下资产标题时。

我的结果应该是所有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这是我的桌子和结果的照片。

共有1个答案

轩辕晔
2023-03-14

在我看来,你的左连接应该是

qryCourseStatus ON qryEmployeeCourse.[EMP ID] = qryCourseStatus.Username AND qryEmployeeCourse.AssetID = qryCourseStatus.AssetID

否则,您将得到一个交叉联接(对于每个员工,qryEmployeeCourse中的所有行以及qryCoursStatus中的所有行)。

在屏幕截图中的第一组结果中,您只得到两行,因为QRYCoursStatus中的员工记录只有两种不同的状态已完成正在进行,而您的组员正在删除所有其他重复项。

在第二组结果中,您会得到更多的行,因为您正在添加完成日期,它对该员工有7个不同的值。

 类似资料:
  • 问题内容: 我正在用于在运行时更新json配置文件。有时,当模式在json文件中不匹配时,仍然会以返回码0退出。 返回0表示成功完成,但是如果找不到正确的模式并更新文件,为什么返回0?有没有解决方法? 谢谢! 问题答案: 如@cnicutar所评论,命令的返回码表示命令是否成功执行。与您在代码/脚本中实现的逻辑无关。 因此,如果您有: sed将返回,但是如果您编写一些语法/表达式错误,或者输入/文

  • 问题内容: 我正在使用Elasticsearch的php库对我的网站进行索引和查找文档。这是用于创建索引的代码: 然后,我使用curl XPUT将文档添加到索引,并使用XGET查询索引。除了返回结果时跨索引的单数和复数查询词不匹配之外,这种方法效果很好。例如,当我搜索“讨论”时,不返回“讨论”的匹配项,反之亦然。为什么会这样呢?我认为这是默认情况下在Elasticsearch中处理的。为了匹配单数

  • 问题内容: 我不明白为什么这个简单的正则表达式匹配不返回匹配对象。它返回None我在做什么错? 我完全是newby(昨天开始),想编写一个小程序来搜索文件夹树中的某些文件,打开这些文件并在这些文件中找到某些行,然后将这些行打印到一个新文件中。为了完成第一步,我想匹配os.walk返回的文件名,并使用某种模式进行匹配。因此,现在我正在检查正则表达式的工作方式,并且据我所知,以下代码应该匹配,但是当我

  • 我尝试进入调试模式,它似乎无法提取字符串的特定部分。我做错了什么?我的regex错了吗?它似乎与我尝试过的所有在线regex构建器/测试器相匹配。

  • 我已经集成了Twilio,它工作得很好。现在我想捕获所有中间消息状态。我指的是发送信息。 我的代码看起来像- 但是返回到statusCallback的输出/响应是不同的,因为- 但是我需要在发送消息时定义的响应 对我来说,字段-num_segments、date_send、direction、error_code、error_message很重要,但我没有收到这些字段。我是否需要使用TWILIO的