【问题标题】:Join and Count Records SQL vba access加入和计数记录 SQL vba 访问
【发布时间】:2017-02-20 15:47:05
【问题描述】:

我刚开始学习 sql,我有一个 vba 函数,我想将其转换为简单的 sql。我有 4 个表需要加入,然后我需要一个总数,其中 date>date1 & date

SELECT COUNT(*), table1.date, table2.status, table3.county
FROM table1 
INNER JOIN table1 ON table1.status=table2.staus
INNER JOIN table1 ON table1.cust_id=table3.cust_id 
INNER JOIN table3 ON table3.countyid=table4.countyname 
WHERE table4.status = Status_string and [table1.Date] > date_varaible_1 and [table1.Date] < date_varaible_2 and [table.county]=countyname

任何纠正这个问题的帮助都会很棒。

ty

【问题讨论】:

  • 您可能只是缺少GROUP BY 子句,但您确定表 3 的县 id 与表 4 的县名匹配吗?似乎不一致。
  • 是的,我只是以不同的方式命名它们。我会重命名它,但它需要大量重写代码。
  • 如何包含 group by 子句?

标签: sql vba ms-access join count


【解决方案1】:

您的查询中有几处需要调整:

  1. JOIN 语句不正确,因为您将 Table1 多次加入自身(允许自加入),但随后您参考 Table2Table3 Table4 不存在。只需通过这些表加入即可。这些可能是简单的拼写错误。
  2. MS Access SQL 要求在表连接对周围使用括号。
  3. 方括号必须环绕表名或字段名。尽管可以使用两组括号,但两个括号不能同时包含两个括号:[table].[field]
  4. 在查询末尾添加GROUP BY。在 SQL 中,聚合查询的 SELECT 中的所有非聚合(或单元级别)列都被视为分组,因此必须在 GROUP BY 中声明。
  5. 按照Query Performance Tips 的建议,为您的日期范围考虑一个BETWEEN 子句:

    Between 让搜索引擎在一次评估中查找值 而不是两个

SQL查询调整

SELECT COUNT(*), table1.date, table2.status, table3.county
FROM ((table1 
INNER JOIN table2 ON table1.status = table2.staus)
INNER JOIN table3 ON table1.cust_id = table3.cust_id) 
INNER JOIN table4 ON table3.countyid = table4.countyname 
WHERE table1.[Date] BETWEEN date_variable_1 AND date_variable_2 
  AND table3.[county] = countyname
  AND table4.[status] = Status_string 
GROUP BY table1.date, table2.status, table3.county

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多