2016-10-11 36 views
0

我剛開始學習SQL和我有一個vba函數,我想轉換爲一個簡單的SQL。我有4個表需要加入,那麼我需要一個總數,其中date> date1 & date < date2和status = status_string和county =縣名(date1,date2,status_string,縣名是變量)。加入和計數記錄SQL vba訪問

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

+0

您可能會錯過「GROUP BY」子句,但是您確定表3的縣ID與表4的縣名相匹配嗎?似乎不一致。 – Parfait

+0

是的,我只是以不同的方式命名它們。我會重命名它,但它需要很多重寫代碼。 – user1504725

+0

我將如何包含group by子句? – user1504725

回答

0

有幾件事情需要在查詢調整:

  1. JOIN聲明並不能正確的,因爲你是加盟表1本身多次(這是允許自連接),但你然後參考表2,表3表4哪些不存在。只需加入這些表格即可。可能這些都是簡單的拼寫錯誤。
  2. MS Access SQL需要表連接配對的括號。
  3. 方括號必須環繞表名稱或字段名稱。儘管可以使用兩套托架,但兩個托架無法包裹兩種托架:[table].[field]
  4. 在查詢結束時添加一個GROUP BY。在SQL中,聚合查詢的SELECT中的所有非聚合(或單元級別)列都被視爲分組,因此必須在GROUP BY中聲明。
  5. 考慮爲您的日期範圍內BETWEEN條款爲推薦使用Query Performance Tips

    之間讓搜索引擎查找的數值在一個評估 而不是兩個

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