Validation Access查询-验证两列之间的数据
我有一个表,其中有一个证书列和一个计划阶段列,一个证书有多个计划阶段值,例如: 证书——计划阶段 123---1 123---2 123---4 222------1 222---2 333---3 我需要运行一个查询,检查每个证书是否有计划阶段1记录,并返回没有计划阶段1记录的证书 因此,我的示例将返回cert333,因为它没有计划阶段1。 我在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。您可以使用带有外部联接
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,并执行了一个不匹配的查询。