gpt4 book ai didi

mysql - 使用一对多关系加入表会产生奇怪的结果

转载 作者:行者123 更新时间:2023-11-29 16:02:58 27 4
gpt4 key购买 nike

我正在尝试提取在特定日期范围内具有 onlineorderid 的所有订单的付款信息,该信息位于不同的表中。但我得到的结果不一致,而且有很多重复的结果。

我尝试在 tblpaids 和 tblorders 之间执行简单的联接,但这不起作用。我认为问题在于 tbl payments 与 tblorders 具有一对多关系,因为同一个 orderid 上可以有多次付款。请记住这是 MYSql 5.6

这是我尝试过的查询,但最终没有成功。

SELECT 
pmtorderid,
pmtorderdate AS 'Date',
pmtamt,
pmtchgtip,
pmtident1,
o.ordonlineorderid
FROM
tblorders o
LEFT OUTER JOIN
tblpayments p ON p.pmtorderid = o.orderid
WHERE
pmttype = 3
AND o.ordonlineorderid IS NOT NULL
AND DATE(PmtOrderDate) BETWEEN '2019-04-22' AND '2019-04-30'
GROUP BY PmtOrderID , PmtOrderDate

当我使用下面的 WHERE 子句查询 tblorders 时,我得到了大约 70 多条记录,这是准确的,但是当我将此子句与 JOIN 一起使用时,我得到了数千条记录,但我知道这些记录是不正确的。

WHERE pmttype = 3 
AND o.ordonlineorderid IS NOT NULL
AND DATE(PmtOrderDate) BETWEEN '2019-04-22' AND '2019-04-30'

最佳答案

看起来您的左连接逻辑很困惑。使用左联接并为左表添加 where 条件将返回右表中的每一行,并且某些行将在左表中匹配。

根据您的 where 条件,我认为您只需要两个表中的行,在这种情况下,请将您的联接更改为 INNER JOIN。

这里有一个链接,可以了解一些有关左连接和内连接的信息: http://a4academics.com/tutorials/24-sql-tutorial/729-difference-between-inner-join-and-left-join

关于mysql - 使用一对多关系加入表会产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56013097/

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