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 Access - 从文本框中的用户输入将参数传递给 SQL 语句