Что-то вроде:
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' ;