兩列

2011-11-16 24 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將被替換爲你的表的名字。