【问题标题】:MS Access, How to pass parameter to subquery?MS Access,如何将参数传递给子查询?
【发布时间】: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 的子查询中使用父查询的数据。

标签: sql ms-access parameters subquery


【解决方案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 语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 2017-03-08
      • 2013-04-21
      相关资源
      最近更新 更多