Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从表中选择*其中日期=本周和?_Php_Mysql - Fatal编程技术网

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

Php 从表中选择*其中日期=本周和?,php,mysql,Php,Mysql,我有一个使用Monaca/Onsen UI和AngularJS构建的跨平台企业应用程序,它允许用户提交每周使用机器的报告。检查包括各种安全检查,例如机器上的当前小时数、存在的安全装置等 该应用程序的这一部分工作正常,用户可以通过专用平板电脑和智能手机提交每周报告 每周报告数据被发送到SQL数据库,我有一个CMS,它使用Laravel框架构建在上,托管在AWS上。管理员用户使用提交的报告数据查看报告,并确保每周提交所有机器的所有报告 我需要一个查询,管理员用户可以快速过滤的所有机器有没有报告提交任

我有一个使用Monaca/Onsen UI和AngularJS构建的跨平台企业应用程序,它允许用户提交每周使用机器的报告。检查包括各种安全检查,例如机器上的当前小时数、存在的安全装置等

该应用程序的这一部分工作正常,用户可以通过专用平板电脑和智能手机提交每周报告

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

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

但由于我的表格只包含已提交的报告,我如何检查哪些机器尚未提交

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

列:ID、名称、机器ID、小时数、提交、日期、周号,带值175、Jane Doe、H932600、True,2017年5月3日15:36、21

我还有一个机械表,如下所示,它只包含机械细节

列:ID、机器ID、品牌、型号,值为1、H93、理光、H1254


在报告未提交的任何给定周,如何向管理员用户显示机器列表

您可以将报表表与机器表左键联接。
并在机器id和周号上加入。
如果没有匹配项,则报告id将为空

例如:

一些测试数据:

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');
使用左联接:

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:

select * 
from machinery 
where `MACHINE ID` not in (
    select distinct `MACHINE ID` 
    from machineryreport 
    where `WEEK NO` = 21
);
或使用不存在的文件:

select * 
from machinery m
where not exists (
    select 1
    from machineryreport r
    where m.`MACHINE ID` = r.`MACHINE ID` 
      and r.`WEEK NO` = 21
);
返回:

ID MACHINE ID MAKE     MODEL
-- ---------- ----     -----
3  H94        Consuela H1254

请参阅左连接。。。哪里是空的。还在挣扎?看见