Проблема с запросом MS Access - PullRequest
       5

Проблема с запросом MS Access

0 голосов
/ 16 августа 2011

Я пытаюсь подсчитать, сколько продуктов связано с каждой из наших женщин-клиентов, чтобы я мог использовать ее в последующих вычислениях.

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

Приведенный выше SQL дает мне список идентификаторов для нашей женщиныклиентов.Теперь, я думаю, в отдельном запросе мне нужно посчитать количество идентификаторов продукта для каждого из идентификаторов в приведенном выше списке, но я не знаю, куда идти дальше.Я не знаю, смогу ли я объединить этот шаг в приведенном выше запросе или мне нужно сделать что-то еще.

Я думаю, мне нужно что-то вроде этого:

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 ]

4 голосов
/ 16 августа 2011

Что-то вроде:

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 spotted):

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, если у вас есть такая таблица), чтобы мы знали, где хранится информация о продуктах (и их заказах).



Sidenote: как (опять же, заслуживая более половины из этих пунктов :) @onedaywhen, Customer_ID должен быть PRIMARY KEY таблицы [Customers]. Если это так (или если это UNIQUE), ваш исходный запрос может быть упрощен:

SELECT [Customers].Customer_ID
FROM [Customers]
WHERE [Customers].Gender = 'Female' ;
0 голосов
/ 16 августа 2011

Попробуйте.

Не проверял, так как у меня нет 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);
...