两列

2011-11-16 19 views
0

之间的访问查询 - 验证数据我有一个有证书编号列和计划相列的表,一个证书编号有多个计划相值,例如:两列

证书#---- ---计划相

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

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

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

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

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

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

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

所以我的示例将返回证书#“333”,因为它没有计划阶段“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 
+0

谢谢,我构建了两个查询,其中一个列出所有证书#和一个仅列出阶段1的证书,并执行了不匹配的查询。 – user1050491

1

我在甲骨文刚刚测试了这个(我没有安装此刻访问),但它也应该在访问工作,因为没有具体的Oracle代码:

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

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

另外,值得注意的是certNo将被替换为你的表的名字。