2017-09-20 23 views
0
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)、およびその総量(その料理店から注文されたもの)を取得します。私は2つの数字を入力することができますが、数量をどのように追加するかは全く分かりません。何か案は?SQL/Microsoft Accessクエリの問題

私が試した質問の1つです。これは実際にエラーを返しました: "あなたのクエリには、集計関数の一部として指定された式 '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) 

あなたがやろうとしているものについての私の推測では、このような正しい何かが取得する必要がありますが閉じている場合は、別のthatsは

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)) 

と1以上

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) 
+2

試したクエリの一部とその出力を表示できますか? – cosinepenguin

+0

@cosinepenguineあなたが期待される結果を示すことはできますか?私はあなたがGROUP BY' –

+1

上に掲載さ – SunKnight0

答えて

2

を動作していない。

SELECT DNum, RNum, SUM(Quant) AS TotalQuantity 
FROM Orders 
GROUP BY DNum, RNum 
+0

ああシュート 'にされて必要なものを疑います!あなたは私にそれを打つ!うまく演奏され、よく演奏される! – cosinepenguin

1

あなたがしようとしているかについてomments:

クエリ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); 

それが動作するはずのようにこれは見えるかもしれませんが、あなたが考えてみればそれはかなり無意味クエリです。 2つの同一のDN値と2つの同一のQuant値を選択しています。人間は、コンピュータに何を求めているのかを理解できるかもしれませんが、コンピュータは困惑しています。

クエリ2クエリ3は、彼らが返され、エラー最初の問い合わせに類似している主な理由は、動作しません。彼らは少し異なりますが、本質的にあなたは間違ったことを求めています。

は今ここにあなたが試すことができますものです:GROUP BY方法をご紹介し

!ウーホー!

GROUP BYは、これと他の多くのクエリに最適です!そのためにW3Schoolsのページに述べたように:

The GROUP BY statement is often used with aggregate functions (COUNT, MAX, MIN, SUM, AVG) to group the result-set by one or more columns.

このようなので、クエリ:この少しを分解する

SELECT Orders.DNum, Orders.RNum, sum(Orders.Quant) as OrderQuantity 
FROM Orders 
GROUP BY (Orders.DNum, Orders.RNum); 

  1. これは、表示したい列を選択します、そしてあなたが合計したいOrders.Quant列の集計。
  2. 次にDNumでグループ分けします。DNumはRNumでグループ化され、探している合計を取得します。

希望します。

+0

@cosinepenquin that thanks man –