javascript – SQL查询2个表,其中值不在给定日期范围内

我在sql数据库中有2个表.

一个表 – 设备 – 包含公司中使用的机器记录清单.以下是Equipment表的列名.

id | assetnumber |制作|模型

哪里:

> id =行唯一ID
> assetnumber =机器的唯一编号,例如ABC123
>类型 – 机械制造
>模型 – 机械模型

对于每件机器,运算符必须完成每周安全检查.每个提交的报告都会输入第二个表格 – 报告.

Reports表的设置如下.

id | userid | assetnumber |问题| weeknumber |提交日期

哪里:

> id =行唯一ID
> userid =机器的运算符ID
> assetnumber =机器的唯一编号,例如ABC123(匹配设备表assetnumber)
> weeknumber – 报告完成的周数
>提交的日期 – 报告完成的日期/时间

我需要让管理员用户输入周数,例如33然后查询Reports表以返回所有机器的资产数量列表,其中没有为查询的周数提交该机器的报告.这将用于确保每周完成报告以达到安全标准.

我正在从网页捕获周数以传递给SQL查询,但我不知道如何查询2个表以返回所需的数据.

我在尝试:

SELECT Equipment.assetnumber, Reports.assetnumber, Reports.weeknumber FROM Reports JOIN Reports ON Reports.assetnumber = Equipment.assetnumber WHERE Reports.weeknumber IS NULL

但我不认为我走在正确的轨道上.
如何找到使用sql交叉引用我的2个表的所有设备的列表?

我还考虑创建一个读取两个表的JavaScript文件,将它们存储为单独的数组然后循环遍历数组以查看值不匹配的位置 – 但显然这比单个SQL查询效率低.

解决方法:

有几种方法可以做到这一点

首先,类似于您的尝试,您可以使用左连接,左连接保留左表(设备)上的所有行,并使用“Where”获取没有右表的数据的行(Reports).

SELECT e.assetnumber
FROM Equipment e
  LEFT JOIN Reports r ON r.assetnumber = e.assetnumber AND r.weeknumber = 33
WHERE r.datesubmitted is NULL

这是另一种方式,更简单:

SELECT e.assetnumber
FROM Equipment e
WHERE e.assetnumber NOT IN
  (SELECT assetnumber FROM Reports WHERE weeknumber = 33)

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...