【问题标题】:query for non-existant value in access查询访问中不存在的值
【发布时间】:2015-06-05 13:37:17
【问题描述】:

我正在尝试创建一个访问查询,该查询将在有人错过某项任务时进行报告,基于没有该任务的轮班记录这一事实。

我有一个记录任务完成基本字段的表是:

Date 
Shift 
Task 
Tech

当技术人员完成一项任务时,会创建一条记录该事件的记录。

我需要能够提取一个查询,以识别班次何时错过任务。

我尝试使用以班次作为唯一数据的示例表进行不匹配的查询,但无济于事,甚至尝试将任务添加到该表中。

所以我正在寻找一些 SQL 帮助。

必须有办法做到这一点......

【问题讨论】:

  • 你没有给我们足够的信息。准确告诉我们您将如何确定轮班错过了一项任务,您会很快得到答案。
  • 忘记输入的班次将无法输入。
  • 我还是一头雾水。这是否意味着Shift 列将为空,还是我们需要检查另一个表?
  • 如果没有输入任务,根本就没有记录……这就是我要确定的。
  • 我们需要更多信息。如果可以的话,请给我们一些示例数据并包括所涉及的每个表。

标签: sql ms-access missing-data


【解决方案1】:

是不是有点像

SELECT Date, Shift, Task, Tech 
WHERE Shift IS NOT NULL AND Task IS NULL

【讨论】:

  • 就像 Invent - Animate 说的一样,确实需要更多信息来为您提供最佳答案。
  • 是的。这将确定所有轮班缺少的任务,这就是他们所说的他们正在寻找的。​​span>
  • 我假设这个问题比我们知道的要多
  • 我也是这么认为的,因此我的第一条评论就是这么说的@Invent-Animate
【解决方案2】:

如果我们假设您有一个单独的班次表(我知道这很危险),并且您要查找的列表中的班次是一个外键。我认为您正在寻找一个没有相关任务的班次 ID。您可以使用连接并在任务表上搜索空值。 示例:

SELECT shifttable.shift, Tasktable.task, tasktable.tech, tasktable.date
FROM shiftTable
LEFT JOIN TaskTable
ON TaskTable.ShiftID = shiftTable.ShiftID
WHERE TaskTable.PrimaryKey IS NULL

给定数据: 班次表:

ShiftID    Shift
1          Monday
2          Tuesday
3          Wednesday

任务表

TaskID   ShiftID  Date    tech    task
1        1        5/15/15 bob     job 1
2        3        5/22/15 Sam     job 4

会产生结果:

Shift
Tuesday

【讨论】:

  • 第二个表:班次检查器:ID - autonum(主要)班次 - 数字(1,2,3)完成 - 是
  • 我尝试了您提供的查询,替换了我的表名,我得到了一个巨大的列表,但它不正确。我想知道我的时间戳 CDate 是否是问题 - 它导致其他查询的问题...
  • 在使用时发布查询。
  • tbl_shiftchecker,其中包含用户填充字段的表中的数据片段: ID - 自动编号 - 主键 解决方案 - 短文本 - 这是任务名称 CDate - 日期/时间 - 这成立输入任务时的时间戳/完成 Shift - 数字(1 2 或 3)/监控完成 - 是/否 - 某些任务不是“监控”的,而某些受监控的任务记录了其他内容,所以只有在计划的监控完成时才会检查。
  • 您是否使用“CDate”作为字段名称? CDate 是 Access 中的内置函数,将其用作实际字段名称将是一个非常糟糕的主意。如果是您的字段名称,请更改它。
猜你喜欢
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 2020-12-18
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
相关资源
最近更新 更多