我对SQL SERVER有一个小问题。 建筑物购买和斯托克斯系统我想从3个表中检索数据: -
查询:
SELECT Tbl_Products.Product_Name, Tbl_PurchaseDetails.BuyPrice, Tbl_PurchaseDetails.AllPieceBoxes, Tbl_PurchaseDetails.TotalPrice, Tbl_PurchaseHeader.purchaseOrder
FROM Tbl_Products
INNER JOIN Tbl_PurchaseHeader ON Tbl_Products.Product_ID = Tbl_PurchaseHeader.ProductId
INNER JOIN Tbl_PurchaseDetails ON Tbl_PurchaseHeader.purchaseOrder = Tbl_PurchaseDetails.PurchaseOrder
Product_Name BuyPrice AllPieceBoxes TotalPrice purchaseOrder
-------------------- -------- ------------- ---------- -------------
Dell Alien-Ware 2500.000 5 12500.000 1
KINGSTON-Desktop 8GB 2500.000 5 12500.000 1
Dell Alien-Ware 95.00 10 950.000 1
KINGSTON-Desktop 8GB 95.00 10 950.000 1
答案 0 :(得分:0)
鉴于下面的连接,我认为在Tbl_PurchaseHeader中有给定Product_ID的多行,然后您将与tbl_PurchaseDetails连接。例如,如果Tbl_PurchaseHeader中有两行,Product_ID为1,那么您将与Tbl_PurchaseDetails连接两次,因此1 Tbl_Products提供2个Tbl_PurchaseHeader,如果Tbl_PurchaseDetails中有多个(比如3个)行,那么您将获得额外的2 x 3所以6行。
FROM Tbl_Products
INNER JOIN Tbl_PurchaseHeader ON Tbl_Products.Product_ID = Tbl_PurchaseHeader.ProductId
INNER JOIN Tbl_PurchaseDetails ON Tbl_PurchaseHeader.purchaseOrder = Tbl_PurchaseDetails.PurchaseOrder
查看您的数据,针对每个表执行单独的SELECT并跟踪数据,以查看a)Product_ID然后是PurchaseOrder返回的行数。