SQL:添加使用其他ProductID购买的特定ProductID

时间:2017-04-18 23:00:03

标签: mysql sql database visual-studio

MSORDERLINE

enter image description here

我正在努力寻找哪些产品添加量最多(糖浆,浓缩咖啡等)。我该怎么做?我可以找到个人销售,但我如何在咖啡饮料中加入咖啡?

Select p.ProductName, TotalADDON = SUM(Quantity)
From MSProducts p, MSOrderline o
where p.ProductID = o.ProductID
Group By p.ProductName

这是我提出的最好的,但它加起来每个单独购买的咖啡加上附加物。附加产品ID为1444和1445.非常感谢任何帮助或演练!

我正在寻找的结果是......

ProductID TotalAddOn

1451 ___________ 1

1452 ___________ 0

1453 ___________ 0

1461 ___________ 0

1462 ___________ 0

1463 ___________ 0

1471 ___________ 0

1472 ___________ 0

1473 ___________ 0

1481 ___________ 6

1482 ___________ 0

1483 ___________ 0

1491 ___________ 0

1492 ___________ 0

1493 ___________ 2

当然有更多数据,但根据给出的数据,这将是结果。

2 个答案:

答案 0 :(得分:0)

  

1)获取购买的附加件数量2)获取订单上的主要饮料   仅限附件3)显示使用附件购买的产品

select x.ProductID,x.ProductName, sum(x.TotalAddOnsperPurchase) TotalQty from

(   Select p.ProductName,p.ProductID,o.PurchaseID,
    (select sum(quantity) from MSOrderline l where l.productID in (1444,1445) and l.PurchaseID = o.PurchaseID)  TotalAddOnsperPurchase   -- to sum quantity of add-ons
    From MSProducts p
    inner join MSOrderline o on
    p.ProductID = o.ProductID
    where
    p.productID not in ('1444','1445')   -- exclude this so to only display main beverage
) x

where x.TotalAddOnsperPurchase > 0 -- remove this line if you want to display everything
group by x.ProductID,x.ProductName

答案 1 :(得分:0)

您似乎想要为每种产品订购与订单中其他产品总量相关的内容。

您可以通过以下方式获取每个订单:

y_probability[:,0].argsort()[::-1]
# array([1, 0, 2, 3])

然后,如果你想要每个订单的平均值,这里有一种方法:

select p.purchaseId, p.productId, sum(o.quantity) as otherQuantity
from MSProducts p join
     MSOrderline o
     on p.PurchaseId = o.PurchaseId and
        p.ProductId <> o.ProductId
group by p.purchaseId, p.productId;