2012-04-20 152 views
0

我試圖從兩個表中獲取數據,但它似乎沒有拉出符合條件的所有記錄。SQL查詢不獲取所有內容

這是我的查詢:

SELECT Parts."Part Number",Parts."Description",Parts."Location",Parts."Qty In Stock",Parts."LastCost",Parts."Cost Price",Parts."Retail Price",Transact."Type" 
FROM Transact 
INNER JOIN Parts 
ON Transact."PartNumber"=Parts."Part Number" 
WHERE Transact.Type = 'Non-stock Purch' 

我試圖去拉每一個具有「非庫存PURCH」反對的記錄,然後拉那部分從零件數據庫的說明,因此,爲什麼我已列入「說明」,「費用」,「上次成本」等

難道我做錯事的,這意味着它不會獲取所有需要的信息,如果我運行查詢:

select * from transact x 
where x.Type = 'Non-stock Purch' 
order by x.PartNumber 

這將返回268條記錄,我的上一個查詢應該返回相同的數字,但實際上只返回111,我知道他們存在於其他表中,因爲他們必須(我也檢查過(以防萬一出錯))。

此外,如果我寫錯了這些查詢或格式不正確,讓我知道!

謝謝。

+0

嘗試'LEFT JOIN'並查看是否再次獲得268條記錄。如果是這樣,你*不*實際上有另一個表中的每個交易的匹配記錄。 – mellamokb 2012-04-20 20:30:57

+0

我知道你已經驗證過數據也在Parts表中,但是如果你使用了LEFT JOIN而不是INNER JOIN呢?它是否返回預期的行數? – Tuan 2012-04-20 20:32:23

回答

2

部件表可能沒有Transact表中記錄的匹配記錄。你正在做一個INNER JOIN;如果零件中的零件中沒有記錄出現在Transact中的記錄中的記錄,則不會返回任何行。

如果您需要Transact中的所有記錄以及Parts中的數據(如果存在),則可以執行LEFT JOIN;如果沒有匹配,則來自零件的所有列在結果中都將爲空。