gpt4 book ai didi

php - 当我将第二个表连接到第一个表时的总和不正确

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

我有两个表:

  1. 订单(ID、网站、订单日期、shipping_fees、amazone_fees、totalAmount、profit_loss、processing_fees)
  2. orderItemDetails(id、orderId、product_name、product_expense)

enter image description here

我编写了这个查询来获取数据,但没有得到我想要的数据。因此,请更正我的查询,以便我获得上图中的数据。

SELECT 
o.totalshippingfees,
o.totalamazonefees,
o.totalorderamount,
o.totalprofitloss,
o.totalprocessing_fees,
oi.totalproductexpense,
o.site
FROM (
SELECT
orderdate,
site,
sum(orders.shipping_fees) as totalshippingfees,
sum(orders.amazone_fees) as totalamazonefees,
sum(orders.totalAmount) as totalorderamount,
sum(orders.profit_loss) as totalprofitloss,
sum(orders.processing_fees) as totalprocessing_fees
FROM orders
group by site
) as o
JOIN (
SELECT
site,
sum(orderItemDetails.product_expense) as totalproductexpense,
sum(orders.shipping_fees) as totalshippingfees,
sum(orders.amazone_fees) as totalamazonefees,
sum(orders.totalAmount) as totalorderamount,
sum(orders.profit_loss) as totalprofitloss,
sum(orders.processing_fees) as totalprocessing_fees
from orders
LEFT JOIN orderItemDetails ON orders.id = orderItemDetails.orderId
group by site
) as oi
WHERE MONTH(o.orderdate) = '".$monthNo."' AND YEAR(o.orderdate)= '".$monthyear[1]."'

最佳答案

如果我理解正确,您可以在 orders 上使用简单的按 site 分组,并在 orderItemDetails< 上按 site 分组 并在网站上加入他们。

select *
from (
select
sum(shipping_fees) as totalshippingfees,
sum(amazone_fees) as totalamazonefees,
sum(totalAmount) as totalorderamount,
sum(profit_loss) as totalprofitloss,
sum(processing_fees) as totalprocessing_fees,
site
from orders
group by site
) d1
join (
select
sum(product_expense) as totalproductexpense,
site
from orders o
left join orderItemDetails od
on o.id = od.orderId
group by site
) d2
on d1.site = d2.site

数据库 fiddle : https://www.db-fiddle.com/f/dkpctq1XrzB7bfsrojaZHd/2

更新:

您可以添加 where 条件进行日期过滤,如下所示:

select *
from (
select
sum(shipping_fees) as totalshippingfees,
sum(amazone_fees) as totalamazonefees,
sum(totalAmount) as totalorderamount,
sum(profit_loss) as totalprofitloss,
sum(processing_fees) as totalprocessing_fees,
site
from orders
where MONTH(orderdate) = 10 AND YEAR(orderdate) = 2019
group by site
) d1
join (
select
sum(product_expense) as totalproductexpense,
site
from orders o
left join orderItemDetails od
on o.id = od.orderId
where MONTH(o.orderdate) = 10 AND YEAR(o.orderdate) = 2019
group by o.site
) d2
on d1.site = d2.site

数据库 fiddle : https://www.db-fiddle.com/f/kgZbS5U1oSgPAGX34URD22/0

关于php - 当我将第二个表连接到第一个表时的总和不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58971441/

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