MS Access, как передать параметр в подзапрос? - PullRequest
1 голос
/ 23 сентября 2011

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

SELECT c.CustomerID, c.Firstname, c.Lastname, 
       (
        SELECT count(orderID) 
          FROM tbl_orders o 
         WHERE o.CustomerID = c.CustomerID
       ) as OrderCount
  FROM tbl_customers c;

Проблема, с которой я сталкиваюсь, заключается в том, что доступ продолжает запрашивать у меня параметр "CustomerID", который будет использоваться в предложении WHERE подвыбора.Очевидно, я хотел бы выяснить это автоматически.Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 23 сентября 2011

Почему бы не попробовать с объединением и группой?это кажется мне проще и богаче.

SELECT c.CustomerID, c.Firstname, c.Lastname, count(o.orderId) as Orders, max(o.OrderDate) as LastOrder
FROM tbl_customers c LEFT JOIN tbl_orders o 
ON o.CustomerID = c.CustomerID
GROUP BY c.CustomerID, c.Firstname, c.Lastname

Такой запрос можно создать визуально в представлении конструктора запросов.Затем вы можете переключиться в представление SQL и скопировать или отредактировать созданный оператор SQL.

2 голосов
/ 23 сентября 2011

Нет видимых причин, это должно работать.Может быть, вы ошиблись на одном из своих полей.Проверьте, является ли CustomerID частью tbl_orders & tbl_customers.

Информацию о подзапросе можно найти по следующей ссылке: SubQueryDoc

...