2017-09-29 5 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 

上記の表は、「注文」という名前です。私は現在取っているデータベース管理クラスのラボで解決しようとしているいくつかのクエリを持っています。あなたの何人かが私を助けてくれたり、素晴らしいものをいくつか見せてくれるのであれば、これらの質問のいくつかは私にいくつかの問題を与えています。私が今立ち往生しているものが記載されていますSQLラボのクエリアシスタンス

"レストランのディッシュD1を注文した顧客の顧客番号(CNum)を、そのレストランのディッシュD1の平均数より多い数量で取得します。

私はといくつかの問題を抱えていますその別では、レストランのR10から注文した料理の最大の量よりも少ない平均量で皿D1の注文を持っているレストランのための

「ゲットレストラン番号(RNUM)は非常に似ています「

は、私がここにショットを#2を与え、以下を思い付いた:私は現在、このクエリが原因私はAvgQuantことを指定していないという事実のために誤っていると信じていることを念頭に置いて

SELECT DISTINCT O.RNum 
FROM Orders AS O 
WHERE (O.DNum = 'D1') 
AND EXISTS 
     (SELECT AVG(O.Quant) AS AvgQuant 
     FROM Orders AS O   
     WHERE EXISTS 
         (SELECT MAX(O.Quant) AS MaxQuant 
         FROM Orders AS O 
         WHERE (O.RNum = 'R10'))) 

必要b e MaxQuant以下であり、正しい構文が何であるかは不明です。ですから、私の質問は、AvgQuantがMaxQuantよりも小さくなければならないと表現する方法と、まだこのクラスでは結合を使用していないということです。最初の質問の

+0

同時に複数の質問をしないでください。これらすべての問題について助けが必要だと思われる場合は、すべての問題について個別の質問をすることができますが、すべて自己完結して適切に尋ねる必要があります。 [宿題の尋ね方](https://meta.stackoverflow.com/questions/334822/how-do-i-ask-and-answer-homework-questions)を念頭に置いて、私たちは試行錯誤をしたい。私は#2のためだけにそれを見ている。 –

+0

また、MySQLタグまたはMS-Accessタグを削除してください。両方を使用している可能性は低いですか(または両方をどのように使用しているか説明してください) –

+0

gotchya、今更新する –

答えて

0

ビルド各レストランと皿の平均量を返す、集約クエリ。

各顧客とレストランと料理の合計数を返す集計クエリを作成します。

レストランと料理のフィールドの最初の2つを結合するクエリを作成します。 JOIN句なし
SELECT Query2.CNum, Query2.RNum, Query2.DNum, Query2.Cust_Rest_Dish_Sum FROM Query2 INNER JOIN Query1 ON (Query2.DNum = Query1.DNum) AND (Query2.RNum = Query1.RNum) WHERE (((Query2.Cust_Rest_Dish_Sum)>[Rest_Dish_Avg]));


SELECT Query2.CNum, Query2.RNum, Query2.DNum, Query2.Cust_Rest_Dish_Sum, Query1.RNum, Query1.DNum FROM Query2, Query1 WHERE (((Query2.Cust_Rest_Dish_Sum)>[Rest_Dish_Avg]) AND ((Query1.RNum)=[Query2].[RNum]) AND ((Query1.DNum)=[Query2].[DNum]));

データサンプルは、クエリをテストするには不十分と思われます。レコードは返されません。だから私は別のレコードを追加し、クエリで返された唯一の顧客です。
CNum DNum RNum Quant Price C200 D1 R10 5 22.49

質問2のためにこれを考慮していない - 何の中古参加本当にすべき:
SELECT DISTINCT Query4.RNum, Query4.DNum, Query4.AvgOfQuant, Query3.MaxOfQuant FROM (SELECT Orders.RNum, Max(Orders.Quant) AS MaxOfQuant FROM Orders GROUP BY Orders.RNum HAVING (((Orders.RNum)="R10"))) AS Query3, (SELECT Orders.RNum, Orders.DNum, Avg(Orders.Quant) AS AvgOfQuant FROM Orders GROUP BY Orders.RNum, Orders.DNum) AS Query4 WHERE (((Query4.DNum)="D1") AND ((Query4.AvgOfQuant)<[MaxOfQuant]));

+0

それは完全なテーブルではありません、私はスレッドのスペースを節約するためにいくつかのデータを削除しましたが、ジョインを使用せずにこれを達成する方法はありますか? –

+0

私はよく慣れていませんが、アクセスクエリでEXISTSを使用したことはありません。 – June7

+0

あなたの助けをありがとう –

関連する問題