2012-06-01 47 views
-1

我似乎遇到查詢語法錯誤,但似乎無法隔離它。我正在使用MS Access,當我運行查詢時,我在FROM子句中出現語法錯誤。用此語法拉我的頭髮語法錯誤

我有兩個表和他們在一對多的關係:

表1稱爲(客戶)具有以下字段:

ID 
FirstName 

表2稱爲(tblservice)具有以下字段:

serviceID 
Timing 
Total 
customerID <-Foreign Key 

首先查詢:

select c.id, c.firstname, avg(s.Total)/(select count(id) from customer) as LifetimeValue 
from tblservice as s join customer as c on s.id = c.id 
group by s.id 

第二次查詢(30天範圍):

select c.id, c.firstname, avg(s.Total)/(select count(id) from customer) as LifetimeValue 
from tblservice as s join customer as c on s.id = c.id 
where (s.Timing)>=DateAdd("d",-30,Date()) 
group by s.id 
+0

它是否給出語法錯誤的位置? –

+1

另外,錯誤消息的確切文本是什麼?這是兩個查詢完全相同的錯誤消息嗎? –

+0

是的,它給出了同樣的錯誤信息「FROM子句中的語法錯誤。」除此之外,它也是ms訪問 – snooker841

回答

1

試試這個:

select c.id, c.firstname, avg(s.Total)/count(c.id) as LifetimeValue 
from tblservice as s inner join customer as c on s.id = c.id 
group by c.id, c.firstname 

select c.id, c.firstname, avg(s.Total)/count(c.id) as LifetimeValue 
from tblservice as s inner join customer as c on s.id = c.id 
where (s.Timing)>=DateAdd("d",-30,Date()) 
group by c.id, c.firstname 

不能由他們選擇c.idc.firstname,除非你組。您可以使用count(c.id),因爲您已經按c.id分組。雖然我沒有在MS Access中使用SQL。所以我不是100%肯定的。試試看。

+0

嗯我試圖執行查詢,但似乎得到相同的語法錯誤消息 – snooker841

+0

你錯過了指定@Barry布朗提到的連接類型。 – Fionnuala

1

MS Access可能會要求您使用INNER JOIN而不僅僅是JOIN

+0

我似乎正在得到一個對話框,要求我在s.id中輸入。我有很多記錄。當我輸入一個創紀錄的數字時,它只會提高一個記錄的平均值。我試圖計算系統中客戶的平均終生價值。 – snooker841

+0

您是否按照@ Raze2dust的建議將'c.id'和'c.firstname'分組? –

+0

我是,只要我運行與分組@@ Raze2dust建議我得到一個「輸入參數值」對話框,要求我輸入s.id – snooker841