MS Access,如何将参数传递给子查询?

Posted

技术标签:

【中文标题】MS Access,如何将参数传递给子查询?【英文标题】:MS Access, How to pass parameter to subquery? 【发布时间】:2011-09-23 14:00:06 【问题描述】:

我有两张桌子。一个包含我所有的客户,另一个包含他们的所有订单。 我想创建一个如下所示的 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;

我遇到的问题是 access 不断询问我将在子选择 WHERE 子句中使用的参数“CustomerID”。显然,我想自动弄清楚。我该怎么做?

【问题讨论】:

你确定两个表都有一个名为CustomerID的列吗? 右:意外参数弹窗一般表示字段名拼写错误。 仅作记录:您也可以在 mysql 的子查询中使用父查询的数据。 【参考方案1】:

没有明显的原因,它应该可以工作。也许你在你的一个领域拼错了。检查 CustomerID 是否是 tbl_orders 和 tbl_customers 的一部分。

您可以通过以下链接找到有关子查询的一些信息:SubQueryDoc

【讨论】:

【参考方案2】:

为什么不试试 join 和 group by 呢?对我来说,它似乎更简单、更丰富。

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 语句。

【讨论】:

以上是关于MS Access,如何将参数传递给子查询?的主要内容,如果未能解决你的问题,请参考以下文章

如何将参数传递给 ms 访问以取回数据

MS Access - 从文本框中的用户输入将参数传递给 SQL 语句

从 DoCmd.OpenReport 将参数传递给 Access 2010 报告

GraphQl 将查询参数传递给子类型

GraphQL 将参数传递给子解析

Angular 2:如何将路由参数传递给子路由?