2012-04-20 153 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;如果没有匹配,则来自零件的所有列在结果中都将为空。