2011-08-16 149 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包括客戶沒有任何訂單(和COUNT(*)應改爲COUNT(Orders.Customer_ID)爲@onedaywhen看準):

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; 

注意,即上面的查詢會給你訂單數量而不是產品的數量,如你所描述的。您必須提供表格的結構(如果您有這樣的表格,可能需要提供OrdersOrderDetails),以便我們知道存儲產品(及其訂單)的信息的位置。



旁註:爲(再次,值得比這些點:) @onedaywhen斑點的一半以上,在Customer_ID應該是表[Customers]PRIMARY KEY。如果是這樣的話(或者如果它是UNIQUE),你原來的查詢可以簡化爲:

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

對於你的外連接建議,大概'COUNT(*)'應該改爲'COUNT(Orders.Customer_ID)',否則具有零訂單的客戶將與具有一個訂單的客戶具有相同的計數。 – onedaywhen

+0

@onedaywhen:對,thnx。 –

0

試試這個。

由於我沒有在這臺PC上獲得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