加入和计数记录SQL vba访问

时间:2016-10-11 23:48:39

标签: sql vba ms-access join count

我刚开始学习sql,我有一个vba功能,我想转换为一个简单的SQL。我有4个表需要加入然后我需要一个总计数日期> date1&日期< date2和status = status_string和county = countyname(date1,date2,status_string,county name是变量)。

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

1 个答案:

答案 0 :(得分:0)

您的查询需要调整一些内容:

  1. JOIN语句不正确,因为您多次将 Table1 连接到自身(允许自连接),但您可以参考 Table2 Table3 Table4 不存在。只需通过这些表格加入。可能这些都是简单的错别字。
  2. MS Access SQL需要围绕表连接配对使用括号。
  3. 括号必须环绕表名或字段名。虽然可以使用两组括号,但两个括号不能包装两者:[table].[field]
  4. 在查询结尾添加GROUP BY。在SQL中,聚合查询的SELECT中的所有非聚合(或单元级)列都被视为分组,因此必须在GROUP BY中声明。
  5. 根据Query Performance Tips的建议,考虑日期范围的BETWEEN条款:

      

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

  6. 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