[英]SQL/Microsoft Access Query Problems
CNum DNum RNum Quant Price
C100 D1 R10 2 8.99
C100 D1 R40 7 9.99
C200 D3 R10 4 16.99
C200 D3 R20 2 15.99
C200 D3 R30 2 17.99
C200 D3 R40 5 19.99
C200 D3 R50 6 18.99
C200 D3 R60 4 19.99
C200 D3 R70 8 15.99
C200 D5 R20 1 8.99
C300 D3 R10 2 16.99
C300 D4 R20 5 22.99
C400 D6 R30 3 4.99
C400 D6 R70 3 2.99
C500 D1 R40 1 9.99
C500 D2 R20 2 23.99
C500 D2 R40 1 24.99
C500 D3 R40 2 19.99
C500 D4 R40 8 23.99
C500 D5 R40 4 8.99
C500 D5 R50 5 8.99
C500 D5 R70 1 9.99
C500 D6 R20 2 1.99
C500 D6 R40 5 3.99
上表是订单名称。 我要解决的查询表示为“对于从餐厅订购的每个菜,请获取菜号(DNum),餐厅号(RNum)和总量(对于从该餐厅订购的菜)。 我可以填充两个数字,但是完全不确定如何将数量相加,我尝试过的任何事情都只能将数量相加。 有任何想法吗?
这是我尝试过的查询之一。 这实际上返回了一个错误:“您的查询未将指定的表达式'DNum'作为聚合函数的一部分。”
SELECT Ord1.DNum, Ord2.DNum, SUM(Ord1.Quant + Ord2.Quant) AS TotQuant
FROM Orders AS Ord1, Orders AS Ord2
WHERE (Ord1.RNum = Ord2.RNum)
另一个没用
SELECT Order1.DNum, Order2.DNum, TotQuant
FROM (SELECT SUM(Order1.Quant + Order2.Quant) AS TotQuant
FROM Orders AS Order1, Orders AS Order2
WHERE (Order1.RNum = Order2.RNum)
AND (Order1.DNum = Order2.DNum))
还有一个
SELECT DISTINCT Ord1.DNum, SUM(Ord1.Quant + Ord2.Quant) AS TotQuant
FROM Orders AS Ord1, Orders AS Ord2
WHERE (Ord1.RNum = Ord2.RNum)
AND (Ord1.DNum = Ord2.DNum)
如果我对您尝试做的事情的猜测是正确的,则应使您接近:
SELECT DNum, RNum, SUM(Quant) AS TotalQuantity
FROM Orders
GROUP BY DNum, RNum
好吧,那么就您尝试过的内容做一些简短评论:
查询1
SELECT Ord1.DNum, Ord2.DNum, SUM(Ord1.Quant + Ord2.Quant) AS TotQuant
FROM Orders AS Ord1, Orders AS Ord2
WHERE (Ord1.RNum = Ord2.RNum);
这看起来似乎应该可以工作,但是如果您考虑一下,这是一个毫无意义的查询。 你是选择两个相同的DNum值和SUM
明两个相同的定量值。 一个人也许能够理解您要计算机执行的操作,但是计算机很困惑。
查询2和查询3将不起作用,主要是因为它们类似于返回错误的初始查询。 它们稍有不同,但是本质上您是在要求错误的内容。
现在,您可以尝试以下操作:
介绍GROUP BY
方法! oo!
GROUP BY
非常适合此查询和其他许多查询! 如w3schools页面上所述:
GROUP BY语句通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以将结果集按一列或多列分组。
所以这样的查询:
SELECT Orders.DNum, Orders.RNum, sum(Orders.Quant) as OrderQuantity
FROM Orders
GROUP BY (Orders.DNum, Orders.RNum);
要对此进行一点解构:
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.