访问查询 - 验证两列之间的数据

时间:2011-11-16 20:58:05

标签: validation ms-access

我有一个表有一个Certificate#列和一个Plan-Phase列,一个Certificate#有多个计划阶段值,例如:

证书#-------计划阶段

123 ---------- 1

123 ---------- 2

123 ---------- 4

222 ---------- 1

222 ---------- 2

333 ---------- 3

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

所以我的例子将返回cert#“333”,因为它没有Plan-Phase“1”。 我正在访问,我尝试计数,以及其他查询组合,但我无法实现我的目标。

我敢打赌这很简单,我只是遗漏了一些东西。

谢谢你, IDAN。

2 个答案:

答案 0 :(得分:1)

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

SELECT cert#
FROM certNo
WHERE cert# NOT IN
    (SELECT DISTINCT cert#
     FROM certNo
     WHERE plan-phase = 1);

我已针对您的示例数据对此进行了测试。此查询的作用是创建一组证书编号,其中包含与之关联的计划阶段1(使用子查询),然后选择不属于该集合的所有cert#条目,即:没有阶段1

此外,值得注意的是,certNo将替换为您的表格的任何名称。

答案 1 :(得分:0)

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

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