繁体   English   中英

SQL / Microsoft Access查询问题

[英]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);

要对此进行一点解构:

  1. 这将选择您要显示的列,以及您想要总和的Orders.Quant列的汇总。
  2. 然后,按DNum分组,然后按RNum分组,以得到所需的总和。

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM