Mysql 一选多和

Mysql 一选多和,mysql,sql,Mysql,Sql,我需要乘以DS单价和订单数量。然后,如果有多个LineTotal,则将其总和相加 从那里,取小计并乘以1.1税 10%的价格,并获得全部订单 我对小计有意见,但还是成功了。但无论我做什么,TotalPrice仍然给我0 这是我的疑问: SELECT *, SUM(DS.UnitPrice*Ord.Qty) AS LineTotal, SUM(LineTotal) AS SubTotal, SUM(SubTotal*1.1) AS TotalPrice

我需要乘以DS单价和订单数量。然后,如果有多个LineTotal,则将其总和相加

从那里,取小计并乘以1.1税 10%的价格,并获得全部订单

我对小计有意见,但还是成功了。但无论我做什么,TotalPrice仍然给我0

这是我的疑问:

SELECT *, 
       SUM(DS.UnitPrice*Ord.Qty) AS LineTotal,
       SUM(LineTotal) AS SubTotal,
       SUM(SubTotal*1.1) AS TotalPrice
 FROM (Orders Ord, Donuts DS, Customers Cust)
    LEFT JOIN Customers ON (Cust.CustID = Ord.OrderID)
    LEFT JOIN Donuts ON (DS.DonutID = Ord.DonutID)
你可以这样做:

SELECT *, SUM(DS.UnitPrice*Ord.Qty) as LineTotal ,SUM(LineTotal) as SubTotal,SUM(SubTotal*1.1) as TotalPrice
FROM (Orders Ord, Donuts DS, Customers Cust)
LEFT JOIN Customers ON (Cust.CustID = Ord.OrderID)
LEFT JOIN Donuts ON (DS.DonutID = Ord.DonutID)

不清楚是否需要按订单对小计或总计进行分组,但这里是查询。如果不需要分组,您可以删除GROUP BY子句:

按医嘱ID分组
问题是您在total的定义中引用的是列别名小计。而且,您的加入条件都是错误的

如果您想要每个订单的总计:

SELECT Ord.OrderId,
       SUM(DS.UnitPrice * Ord.Qty) AS SubTotal,
       SUM(DS.UnitPrice * Ord.Qty * 1.1) AS TotalPrice
FROM Orders Ord JOIN
     Customers Cust
     ON Cust.CustID = Ord.OrderID JOIN
     Donuts DS
     ON DS.DonutID = Ord.DonutID
GROUP BY Ord.OrderId;
如果需要所有订单的总计:

SELECT SUM(DS.UnitPrice * Ord.Qty) AS SubTotal,
       SUM(DS.UnitPrice * Ord.Qty * 1.1) AS TotalPrice
FROM Orders Ord JOIN
     Customers Cust
     ON Cust.CustID = Ord.OrderID JOIN
     Donuts DS
     ON DS.DonutID = Ord.DonutID;

你想把每个单位的计算价格和小计一起计算吗?在您的查询中,LineTotal和SubTotal将是相同的内容为什么要将旧的逗号分隔的隐式联接与moder LEFT联接语法混合使用?非常混乱。为什么顾客和甜甜圈包含两次?请编辑您的问题,并提供示例数据和期望的结果。这一个和顶部的第一个答案帮助很大,我现在只需要弄清楚在哪里放置所需的select*,以获取有关订单的所有信息,客户和suchI现在已将所有信息发送给swho,并且总数显示正确,非常感谢所有人!选择*,SUMDS.UnitPrice*订单数量作为LineTotal,SUMLineTotal作为小计,SUMDS.UnitPrice*订单数量*1.1作为订单总价Ord加入客户Cust.CustID=Ord.OrderID加入DS.DonutID=Ord.DonutID组Ord.OrderID
SELECT SUM(DS.UnitPrice * Ord.Qty) AS SubTotal,
       SUM(DS.UnitPrice * Ord.Qty * 1.1) AS TotalPrice
FROM Orders Ord JOIN
     Customers Cust
     ON Cust.CustID = Ord.OrderID JOIN
     Donuts DS
     ON DS.DonutID = Ord.DonutID;