sql - Access 2010 SQL 查询选择带有临时表的内部联接
问题描述
在使用 VBA 的 Access 2013 中,我正在运行一个 SQL 查询,其中一个表 (CUSTOMERS_TEMP) 有一个monthly_total,它是从 SALESHIST_TEMP 表中获取的临时表 (SALESHIST) 中的 sales_price 的总和。我不确定为什么这不起作用。
Dim SQL As String
SQL = "Update CUST " _
& "SET CUST.Monthly_Total = SALESHIST.Monthly_Total " _
& "FROM CUSTOMERS_TEMP AS CUST " _
& "INNER JOIN (SELECT KEY, SUM(SALES_PRICE) AS MONTHLY_TOTAL FROM SALESHISTORY_TEMP GROUP BY KEY) AS SALESHIST " _
& "ON CUST.Key = SALESHIST.Key "
DoCmd.RunSQL SQL
解决方案
考虑用于可更新查询的DSum 域聚合。还可以考虑将查询保存为数据库中的存储对象,因为它更有效,因为 Access 引擎可以编译它以获得最佳执行计划。此外,避免使用Key作为列名,因为它是一个保留字。
SQL
UPDATE CUSTOMERS_TEMP CUST
SET CUST.Monthly_Total = DSum("SALES_PRICE", "SALESHISTORY_TEMP",
"[Key]='" & CUST.[Key] & "'")
VBA
CurrentDb.Execute "mySavedQuery", dbFailOnError
最后,重新考虑将聚合数据保存在源表中,因为您可以随时根据需要查询它们并避免存储资源。
推荐阅读
- php - 我想在mysql中使用php实现行级锁定
- javascript - 中止来自网络工作者的 ajax 调用
- angular - 如何使用角度示意图修改 HTML 文件
- python-3.x - 从 doc.element.iter() 获取 docx 元素
- c# - 基于 C# Web Api Facebook 令牌的身份验证
- javascript - 使用来自另一个对象的属性作为键查找对象
- java - 通过注解对方法的数组列表(反射 Java)进行排序
- javascript - React 16:错误:无法在未安装的组件上找到节点
- python - 没有强制定位的 Scipy Weibull Min Fit 不好
- sql-server - 连接在一起的日期之间的差异