我有一个具有以下结构的数据库:https://i.stack.imgur.com/gMeQP.png
我试图运行一个select语句,从多个表中获取信息,但它总是给我带来重复的结果。我使用的语句是:
SELECT StockReceipts.StockID, StockReceipts.Quantity, StockPriceHistory.Price
FROM StockReceipts,StockPriceHistory,Receipts
WHERE (Receipts.ReceiptID = 1) AND (Receipts.OrderDate BETWEEN StockPriceHistory.DateStart AND StockPriceHistory.DateEnd)
我得到的结果是:https://i.stack.imgur.com/ZMFOv.png
我实际想要的是匹配stockreceives表中的行,但每个库存项目的价格(在订购日期和时间内的价格-从收据表中获取的OrderDate)也从StockPriceHistory表中获取。我不明白当StockReceipts表中只有两行时,为什么它会构成重复/不正确的行。
有人能帮忙吗?感谢
SELECT
SR.StockID,
SR.Quantity,
SPH.Price
FROM
Receipts R
JOIN StockReceipts SR
on R.ReceiptID = SR.ReceiptID
JOIN StockPriceHistory SPH
on SR.StockID = SPH.StockID
WHERE
R.ReceiptID = 1
AND R.OrderDate BETWEEN SPH.DateStart AND SPH.DateEnd
表之间没有JOIN条件,这是一个笛卡尔结果。。。对于其中的每一条记录,从所有其他表行中抓取条目。