gpt4 book ai didi

mysql - 从多表 SELECT 语句返回无效结果

转载 作者:行者123 更新时间:2023-11-29 13:24:04 25 4
gpt4 key购买 nike

我有一个具有以下结构的数据库: http://i.imgur.com/DFZz3Py.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)

我得到的结果是: http://i.imgur.com/2ZrgYyZ.png

我真正想要的是匹配 stockreceipts 表中的行,但还有每个库存商品的价格(订购日期和时间范围内的价格 - 取自 Receipts 表的 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 条件,使其成为笛卡尔结果...对于其中的每条记录,从所有其他表行中获取条目。

关于mysql - 从多表 SELECT 语句返回无效结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com