MS Access查询麻烦

时间:2011-08-16 12:57:29

标签: sql ms-access ms-access-2007

我正在尝试计算与每个女性客户相关的产品数量,以便我可以在以后的计算中使用它。

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**]" )

有人可以帮忙吗?我是在正确的轨道上吗?

如果您需要更多信息,请告诉我。

2 个答案:

答案 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;

注意,上述查询会为您提供订单数量,而不是您所描述的产品数。您必须提供表格的结构(如果您有这样的表,可能需要OrdersOrderDetails),以便我们知道有关产品(及其订单)的信息存储在哪里。



旁注: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);