我正在尝试计算与每个女性客户相关的产品数量,以便我可以在以后的计算中使用它。
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 :(得分: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)
as @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;
注意,上述查询会为您提供订单数量,而不是您所描述的产品数。您必须提供表格的结构(如果您有这样的表,可能需要Orders
或OrderDetails
),以便我们知道有关产品(及其订单)的信息存储在哪里。
旁注:as(再次,值得超过这些点的一半:) @oneday当发现时,Customer_ID
应该是表PRIMARY KEY
的{{1}}。如果是这种情况(或者如果是[Customers]
),则可以简化原始查询:
UNIQUE
答案 1 :(得分: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);