首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择*从表中日期=本周和?

选择*从表中日期=本周和?
EN

Stack Overflow用户
提问于 2017-05-29 10:10:18
回答 1查看 83关注 0票数 0

我有一个跨平台的企业应用程序,它使用Monaca/Onsen和AngularJS构建,允许用户每周提交一次关于他们在一周内使用的机器的报告。这些检查包括各种安全检查,例如目前的机器工作时间、安全设备的存在等。

这部分应用程序运行得很好,用户可以通过专用平板电脑和智能手机提交每周报告。

每周报告数据被发送到一个SQL数据库,我使用Laravel框架在Sximo Builder上构建了一个CMS,并且托管在AWS上。管理员用户使用提交的报告数据来查看报告,并确保每周提交所有机器的所有报告。

我需要一个查询,管理员用户可以快速过滤的所有机器,有,没有报告提交的任何给定的星期数。

但是,由于我的表格只载有已提交的报告,我如何检查哪些机制尚未提交?

我提交的报告的表如下所示,其中包含一些虚拟数据。

列:ID、名称、机器ID、时数、提交时间、日期、周和值175、Jane Doe、H93、2600、True,03/05/2017 15:36、21

我也有一个机器桌子,看起来如下,它只是保存机器的细节。

列:ID、机器ID、MAKE、带有值1的模型、H93、理光、H1254

如果报告已经提交了,而不是,我如何向管理员用户显示机器列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-29 10:55:20

您可以使用机器将报告表加入到表中。

并加入机器id和周号。

如果没有匹配,则报告id将为空。

例如:

一些测试数据:

代码语言:javascript
复制
drop table if exists machineryreport;
create table machineryreport (ID int, NAME varchar(30), `MACHINE ID` varchar(4), HOURS int, SUBMITTED BOOLEAN, `DATE` date, `WEEK NO` int);
insert into machineryreport (ID, NAME, `MACHINE ID`, HOURS, SUBMITTED, `DATE`, `WEEK NO`) values
(175, 'John Doe', 'H92', 2600, True, '2017-03-05 15:36', 21),
(176, 'Jane Doe', 'H93', 2700, True, '2017-03-05 15:38', 21),
(177, 'Jake Doe', 'H95', 2900, True, '2017-03-06 15:42', 21);

drop table if exists machinery;
create table machinery (ID int, `MACHINE ID` varchar(4), MAKE varchar(30), MODEL varchar(8));
insert into machinery (ID, `MACHINE ID`, MAKE, MODEL) values
(1,'H92','Alderado','H1254'),
(2,'H93','Ricoh','H1254'),
(3,'H94','Consuela','H1254'),
(4,'H95','Josep','H1254');

使用左联接:

代码语言:javascript
复制
select m.* 
from machinery m
left join machineryreport r 
  on (m.`MACHINE ID` = r.`MACHINE ID` and
      r.`WEEK NO` = 21)
where r.ID is null;

或在子查询上使用NOT IN:

代码语言:javascript
复制
select * 
from machinery 
where `MACHINE ID` not in (
    select distinct `MACHINE ID` 
    from machineryreport 
    where `WEEK NO` = 21
);

或使用“不存在”:

代码语言:javascript
复制
select * 
from machinery m
where not exists (
    select 1
    from machineryreport r
    where m.`MACHINE ID` = r.`MACHINE ID` 
      and r.`WEEK NO` = 21
);

返回:

代码语言:javascript
复制
ID MACHINE ID MAKE     MODEL
-- ---------- ----     -----
3  H94        Consuela H1254
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44239872

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档