2013-08-01 32 views
0

以下查詢返回9,817條記錄。現在,我想從另一個表中選擇一個字段。看到註釋掉的兩行,我簡單地選擇了這個附加字段並添加了一個JOIN語句來綁定這些新列。添加這些行後,查詢現在返回649,200條記錄,我找不到原因!我猜與我的JOIN語句一起,我的WHERE條件有問題。請幫忙,謝謝。簡單SELECT,但添加JOIN會返回太多行

SELECT DISTINCT dbo.IMPORT_DOCUMENTS.ITEMID,BEGDOC,BATCHID

- ,dbo.CATEGORY_COLLECTION_CATEGORY_RESULTS.CATEGORY_ID

FROM IMPORT_DOCUMENTS

--JOIN dbo.CATEGORY_COLLECTION_CATEGORY_RESULTS ON

DBO。 CATEGORY_COLLECTION_CATEGORY_RESULTS.ITEMID = dbo.IMPORT_DOCUMENTS.ITEMID

WHERE(BATCHID LIKE 'IC 0%' 或BATCHID LIKE 'LP0%')

AND dbo.IMPORT_DOCUMENTS.ITEMID IN 

    (SELECT dbo.CATEGORY_COLLECTION_CATEGORY_RESULTS.ITEMID FROM 

CATEGORY_COLLECTION_CATEGORY_RESULTS

WHERE SCORE >= .7 AND SCORE <= .75 AND CATEGORY_ID IN(

     SELECT CATEGORY_ID FROM CATEGORY_COLLECTION_CATS WHERE COLLECTION_ID IN (11,16)) 

    AND Sample_Id > 0) 

AND dbo.IMPORT_DOCUMENTS.ITEMID NOT IN 

(SELECT ASSIGNMENT_FOLDER_DOCUMENTS.Item_Id FROM ASSIGNMENT_FOLDER_DOCUMENTS) 
+0

每個IMPORT_DOCUMENT平均可以有大約70個CATEGORY_COLLECTION_CATEGORY_RESULTS嗎? –

回答

1

一個可能的原因是因爲你的一個表包含在較低級別的數據,比你的加入降低鍵。例如,每個項目ID可能有多個記錄。相同的物品ID重複X次。我會修復像下面這樣的查詢。如果沒有數據的知識,嘗試運行下面的修改後的查詢....如果輸出是你正在尋找沒有什麼,把它轉換成SELECT中的SELECT ...

希望這有助於....

試試這個SQL:SELECT DISTINCT a.ITEMID,a.BEGDOC,a.BATCHID,b.CATEGORY_ID FROM IMPORT_DOCUMENTS a JOIN(SELECT DISTINCT ITEMID FROM CATEGORY_COLLECTION_CATEGORY_RESULTS WHERE SCORE> = .7 AND SCORE < = .75 AND CATEGORY_ID IN(SELECT DISTINCT CATEGORY_ID FROM CATEGORY_COLLECTION_CATS WHERE COLLECTION_ID IN(11,16))AND Sample_Id> 0)B ON a.ITEMID = b.ITEMID WHERE a。(a.BATCHID LIKE'IC0%'或a.BATCHID LIKE'LP0%')and a。 ITEMID NOT IN(SELECT DIDTINCT Item_Id FROM ASSIGNMENT_FOLDER_DOCUMENTS)