Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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
Validation Access查询-验证两列之间的数据_Validation_Ms Access - Fatal编程技术网

Validation Access查询-验证两列之间的数据

Validation Access查询-验证两列之间的数据,validation,ms-access,Validation,Ms Access,我有一个表,其中有一个证书列和一个计划阶段列,一个证书有多个计划阶段值,例如: 证书——计划阶段 123---1 123---2 123---4 222------1 222---2 333---3 我需要运行一个查询,检查每个证书是否有计划阶段1记录,并返回没有计划阶段1记录的证书 因此,我的示例将返回cert333,因为它没有计划阶段1。 我在access中工作,我尝试了计数和其他查询组合,但我无法实现我的目标 我打赌这很简单,我只是错过了一些东西 谢谢,, Idan。您可以使用带有外部联接

我有一个表,其中有一个证书列和一个计划阶段列,一个证书有多个计划阶段值,例如:

证书——计划阶段

123---1

123---2

123---4

222------1

222---2

333---3

我需要运行一个查询,检查每个证书是否有计划阶段1记录,并返回没有计划阶段1记录的证书

因此,我的示例将返回cert333,因为它没有计划阶段1。 我在access中工作,我尝试了计数和其他查询组合,但我无法实现我的目标

我打赌这很简单,我只是错过了一些东西

谢谢,,
Idan。

您可以使用带有外部联接的子查询来查找您要查找的内容。大概是这样的:

SELECT qOther.* 
FROM 
(SELECT CertNo
FROM MyTable
WHERE PlanPhase <> 1) qOther
LEFT JOIN
(SELECT CertNo
FROM MyTable
WHERE PlanPhase = 1) qOne
ON qOther.CertNo = qOne.CertNo
WHERE qOne.CertNo IS NULL

我刚刚在Oracle中测试了这一点,目前还没有安装Access,但它也应该在Access中工作,因为没有Oracle特定的代码:

SELECT cert#
FROM certNo
WHERE cert# NOT IN
    (SELECT DISTINCT cert#
     FROM certNo
     WHERE plan-phase = 1);
我已经根据您的示例数据对此进行了测试。此查询所做的是创建一组证书编号,该编号使用子查询与计划阶段1关联,然后选择不属于该编号集的所有证书条目,即:无阶段1


另外,值得注意的是,certNo将被替换为表的任何名称。

谢谢,我构建了两个查询,一个列出所有cert,另一个只列出具有阶段1的cert,并执行了一个不匹配的查询。