Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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
Sql MS Access 2016-在复杂查询中从单独的表中提取客户端名称_Sql_Ms Access_Ms Access 2016 - Fatal编程技术网

Sql MS Access 2016-在复杂查询中从单独的表中提取客户端名称

Sql MS Access 2016-在复杂查询中从单独的表中提取客户端名称,sql,ms-access,ms-access-2016,Sql,Ms Access,Ms Access 2016,我有三个表用于漏洞扫描作业:客户、授权表单和扫描。关系是从左到右的一对多关系。我以前有与客户端直接相关的扫描,但实现了forms表以添加防止未经授权扫描的功能。我有一个下面的查询,它提取最近和下一次扫描的日期(非常感谢@donPablo),但是当我在表中进行更改时,我不再从customers表中提取正确的数据。我不太确定如何修复它 SELECT u.Customer_Company, z.* FROM (Select NZ(a.Scan_Data.Customer_ID, b.Sca

我有三个表用于漏洞扫描作业:客户、授权表单和扫描。关系是从左到右的一对多关系。我以前有与客户端直接相关的扫描,但实现了forms表以添加防止未经授权扫描的功能。我有一个下面的查询,它提取最近和下一次扫描的日期(非常感谢@donPablo),但是当我在表中进行更改时,我不再从customers表中提取正确的数据。我不太确定如何修复它

SELECT u.Customer_Company, z.*
FROM (Select 
     NZ(a.Scan_Data.Customer_ID, b.Scan_Data.Customer_ID) as Customer,
     aPast as Past,
     aFuture as Future,
     DATEDIFF("d", aPast, aFuture) as Difference  
FROM
    (Select Scan_Data.Customer_ID, Max(Scan_Date) as aPast from Scan_Data where Scan_Date <= DATE() Group By Scan_Data.Customer_ID) a
LEFT JOIN
    (Select Scan_Data.Customer_ID, Min(Scan_Date) as aFuture from Scan_Data where Scan_Date > DATE() Group By Scan_Data.Customer_ID) b
ON a.Scan_Data.Customer_ID = B.Scan_Data.Customer_ID

UNION 

Select 
     NZ(a.Scan_Data.Customer_ID, b.Scan_Data.Customer_ID) as Customer,
     aPast as Past,
     aFuture as Future,
     DATEDIFF("d", aPast, aFuture) as Difference  
FROM
    (Select Scan_Data.Customer_ID, Max(Scan_Date) as aPast from Scan_Data where Scan_Date <= DATE() Group By Scan_Data.Customer_ID) a
RIGHT JOIN
    (Select Scan_Data.Customer_ID, Min(Scan_Date) as aFuture from Scan_Data where Scan_Date > DATE() Group By Scan_Data.Customer_ID) b
ON a.Scan_Data.Customer_ID = B.Scan_Data.Customer_ID

)  AS z LEFT JOIN Customer_Data AS u ON cint(z.Customer) = cint(u.Customer_ID);
Form_数据表:

.Customer_ID | .Customer_Name | etc.
     1       | Microsoft     |
     2       | Reddit        |
.Form_ID     | .Signature_Date | .Expiration_Date | .Customer_ID
     1       | 01-Jan-19       | 01-Jan-20        | 2/Reddit
     2       | 15-May-18       | 15-May-21        | 1/Microsoft
.Scan_ID     | .Scan_Title       | .Scan_Date     | .Customer_ID
     1       | First MS 19052018 | 19-May-18      | 1/2/Reddit
     2       | First R 05012019  | 05-Jan-19      | 2/1/Microsoft
扫描数据表:

.Customer_ID | .Customer_Name | etc.
     1       | Microsoft     |
     2       | Reddit        |
.Form_ID     | .Signature_Date | .Expiration_Date | .Customer_ID
     1       | 01-Jan-19       | 01-Jan-20        | 2/Reddit
     2       | 15-May-18       | 15-May-21        | 1/Microsoft
.Scan_ID     | .Scan_Title       | .Scan_Date     | .Customer_ID
     1       | First MS 19052018 | 19-May-18      | 1/2/Reddit
     2       | First R 05012019  | 05-Jan-19      | 2/1/Microsoft
上面的扫描数据显示了我的问题。Scan_Data.Customer_ID字段中的数字是其他两个表中的PK。.Customer\u ID字段根据表单ID而不是实际的客户ID提取客户ID。它应该如下所示:

.Scan_ID     | .Scan_Title       | .Scan_Date     | .Customer_ID
     1       | First MS 19052018 | 19-May-18      | 2/1/Microsoft
     2       | First R 05012019  | 05-Jan-19      | 1/2/Reddit

编辑问题以将示例数据发布为文本表(不是图像)。问题已编辑。我希望这是可以理解的。什么是表格-纸质文件?为什么扫描数据客户ID字段有2个数字?到底是什么保存到该字段中,以及如何输入?这不应该是作为外键的表单ID吗?毕竟,您不扫描文档而不是客户端吗?还有,为什么表单数据和扫描数据需要是单独的表?他们是否有一对一的关系?表格是我们执行扫描的授权。一家公司将有许多表格,每个表格将有许多扫描。一次扫描将有一个表格和一个公司。