gpt4 book ai didi

php - MySQL 加入两个表给出了不正确的结果

转载 作者:行者123 更新时间:2023-11-30 23:00:43 25 4
gpt4 key购买 nike

我正在尝试加入两个查询,希望能得到与我在单个查询中收到的结果相同的结果。我绝不擅长 MySQL 连接查询,因此我的困境。这是我的查询及其结果。

这是查询#1:

select      sum(fbaoh.qty) as sumQty 
from FBAOrderHistory fbaoh
where fbaoh.asin = 'B002BRSCJ6'
and fbaoh.sku = '643356041428'
and fbaoh.account_id = 8
and fbaoh.datetimePlaced BETWEEN '2014-05-12' AND '2014-06-11';
/*
sumQty = 139
*/

这是查询#2:

select      count(fbai.id) as totalRows
from FBAInventory fbai
LEFT JOIN FBAInventoryReport fbair
ON fbai.fbaInventoryReport_id = fbair.id
where fbai.asin = 'B002BRSCJ6'
and fbai.sku = '643356041428'
and fbai.account_id = 8
and fbair.report_datetime BETWEEN '2014-05-12' AND '2014-06-11';
/*
totalRows = 30
*/

查询 #3 - 以下是我的查询:

select      sum(fbaoh.qty) as sumQty, 
count(fbai.id) as totalRows
from FBAOrderHistory fbaoh
LEFT JOIN FBAInventory fbai
ON fbaoh.asin=fbai.asin
LEFT JOIN FBAInventoryReport fbair
ON fbai.FBAInventoryReport_id=fbair.id
where fbaoh.asin = 'B002BRSCJ6'
and fbaoh.sku = '643356041428'
and fbai.account_id = 8
and fbaoh.account_id = 8
and fbaoh.datetimePlaced BETWEEN '2014-05-12' AND '2014-06-11'
and fbair.report_datetime BETWEEN '2014-05-12' AND '2014-06-11';
/*
sumQty = 4170
totalRows = 3840
*/

这里是表模式:

亚马逊物流订单历史记录

 id | qty | sku     | asin    | datetimePlaced
------------------------------
1 | 1 | ABC | 123 | 2014-05-20 06:06:03

亚马逊物流库存

 id | sku     | asin    | fbaInventoryReport_id
---------------------------------------------------
1 | ABC | 123 | 1

亚马逊物流库存报告

 id | report_datetime
---------------------------------------------------
1 | 2014-05-20 06:06:03

查询 #1 - 我根据 sku 和 asin 以及日期范围获取总和。

查询 #2 - 我正在获取基于 sku 和 asin 以及日期范围的总行数。

查询 #3 - 我想得到相同的结果。两个查询之间的唯一联系是 sku 和 asin。

显然,上次查询的结果不是我想要接收的结果。我究竟做错了什么?

这是我能说的。查询不只是向我显示 sumQty 和 totalRows,而是实际将 sumQty (139) 和 totalRows (30) 相乘,从而等于:4170。至于 3840,我不知道这是如何呈现的。

感谢任何人可以提供给我的帮助!

最佳答案

无法连接这些查询,因为它们会像您发现的那样丢弃总和和计数。原因是这些表之间没有一对一的关系。执行此操作的最佳方法是按如下方式加入结果:

select q1.sumQty, q2.totalRows
from(
select sum(fbaoh.qty) as sumQty
from FBAOrderHistory fbaoh
where fbaoh.asin = 'B002BRSCJ6'
and fbaoh.sku = '643356041428'
and fbaoh.account_id = 8
and fbaoh.datetimePlaced BETWEEN '2014-05-12' AND '2014-06-11') q1,
(select count(fbai.id) as totalRows
from FBAInventory fbai
LEFT JOIN FBAInventoryReport fbair
ON fbai.fbaInventoryReport_id = fbair.id
where fbai.asin = 'B002BRSCJ6'
and fbai.sku = '643356041428'
and fbai.account_id = 8
and fbair.report_datetime BETWEEN '2014-05-12' AND '2014-06-11') q2

关于php - MySQL 加入两个表给出了不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24168607/

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