为什么我在加入5个表时会得到更多我期望的行?

时间:2016-03-23 07:38:27

标签: sql sql-server sql-server-2008 tsql join

我们使用以下查询来连接5个表。它可以正常工作4个表并正确地给出结果,但是在添加项目表后,它会提供更多行,然后需要所有订单的项目名称。

SELECT
    CMP.CMPName, 
    OrderHeader.ID, 
    OrderHeader.Date,
    Customer.Name, 
    OrderDetail.Qty, 
    ItemMaster.ItemName
FROM OrderHeader 
INNER JOIN CMP ON Orders.CompanyID=Company.ID 
INNER JOIN Customer ON OrderHeader.CustomerID=Customer.ID 
INNER JOIN OrderDetail ON OrderHeader.OrderID=OrderDetail.OrderHeaderID   
INNER JOIN ItemMaster ON OrderDetail.ItemID=ItemMaster.ID;

1 个答案:

答案 0 :(得分:2)

我认为你必须检查

的所有字段
OrderDetail.ItemID 

ItemMaster.ID; 

是不同的矿石有空值。 使用空值连接两个字段会产生不可靠的结果。