2011-08-16 22 views
0

私は各女性顧客に関連付けられている製品の数を数えようとしていますので、後で計算することができます。MS Accessクエリのトラブル

SELECT [Customers].Customer_ID 
FROM [Customers] 
WHERE ((([Customers].Gender)='Female')) 
GROUP BY [Customers].Customer_ID; 

上記のSQLは私の女性顧客のIDのリストです。ここでは、別のクエリで、上記のリストのIDごとにプロダクトIDの数を数えなければならないと思いますが、ここからどこに行くのかはわかりません。このステップを上記のクエリに組み合わせることができるかどうか、または他の何かをする必要があるかどうかはわかりません。

私はこのような何か必要に思っています:

DCount("Order_ID", "Orders", "Customer_ID = [**how do I make it to where 
this equals the resulting Customer_ID's from the above query**]") 

を、誰かが助けてくださいことはできますか?正しい軌道にいるのですか?

さらに詳しい情報が必要な場合は、私にお知らせください。

+0

どのテーブルに製品がありますか?テーブル「注文」? –

+2

'GROUP BY [Customers] .Customer_ID'は、' Customer_ID'が 'Customers'テーブル内で一意ではないことを示唆しています。それは本当に本当ですか? – onedaywhen

答えて

4

ような何か:

SELECT [Customers].Customer_ID 
    , COUNT(*) AS NumOrders 
FROM [Customers] 
    INNER JOIN [Orders] 
    ON [Orders].Customer_ID = [Customers].Customer_ID 
WHERE ([Customers].Gender = 'Female') 
GROUP BY [Customers].Customer_ID; 

INNER JOINが任意注文ずに顧客を含むことLEFT JOINに変更されなければならない(及び@onedaywhenがスポットとしてCOUNT(*)COUNT(Orders.Customer_ID)に変更しなければならない):

SELECT [Customers].Customer_ID 
    , COUNT(Orders.Customer_ID) AS NumOrders 
FROM [Customers] 
    LEFT JOIN [Orders] 
    ON [Orders].Customer_ID = [Customers].Customer_ID 
WHERE ([Customers].Gender = 'Female') 
GROUP BY [Customers].Customer_ID; 

、上記のクエリはの注文数がであり、数字がではないことをご了承ください。製品番号テーブルの構造(おそらくOrders、またはテーブルがある場合はOrderDetails)を提供する必要がありますので、製品(および注文)に関する情報がどこに格納されているかを知ることができます。



追記:(再び、@onedaywhen斑点これらの点:)の半分以上に値するとして、Customer_IDを表[Customers]PRIMARY KEYであると考えられます。その場合(またはUNIQUEの場合)、元のクエリは簡略化できます。

SELECT [Customers].Customer_ID 
FROM [Customers] 
WHERE [Customers].Gender = 'Female' ; 
+2

おそらく 'COUNT(*)'は 'COUNT(Orders.Customer_ID)'に変更する必要があります。そうでなければ、0注文の顧客は1注文の顧客と同じ数になります。 – onedaywhen

+0

@onedaywhen:右、thnx。 –

0

これを試してみてください。

私はこのパソコンでMS Accessを取得していないため、テストしていません。 同様のものはMySQLとMS SQLで動作するので、動作するかもしれません:)

SELECT SUM(O.Order_ID), C.Customer_ID 
FROM [Orders] AS O, [Customers] AS C 
WHERE C.Customer_ID IN (
SELECT [Customers].Customer_ID 
FROM [Customers] 
WHERE ((([Customers].Gender)='Female')) 
GROUP BY [Customers].Customer_ID); 
+0

あなたはそうです。私の悪い:)カウントはトリックを行う必要があります。 – digi

関連する問題